La solución común es llamar a un método estático que pertenece al tipo que puede calcular el valor del parámetro que se pasará al constructor base.
Por ejemplo:
public B(int x, int y)
: base(x, y, CalculateZ(x, y))
{
}
// You can make this parameterless if it does not depend on X and Y
private static int CalculateZ(int x, int y)
{
//Calculate it here.
int exampleZ = x + y;
return exampleZ;
}
tenga en cuenta que CalculateZ
no puede ser un método de instancia, porque la referencia this
no está disponible en inicializadores de constructor.
desde el lenguaje de especificación 10.11.1 inicializadores de constructor:
Una instancia de inicialización del constructor no puede acceder a la instancia de ser creado. Por lo tanto se trata de un error de tiempo de compilación para hacer referencia a este en una expresión argumento de la inicializador constructor, como lo es un error de tiempo de compilación para una expresión argumento para hacer referencia a cualquier instancia miembro a través de un simple nombre.
EDIT: Se cambió 'instancia' a 'estático' en la descripción.
¿Qué? es 'B: A'? Si es así, ¿cómo puede A tener * más * datos que B? Además, A no parece tener dicho constructor ... – Kobi
¿Te refieres a la clase pública B: A {en tu ejemplo? –
Publicación original editada. Sí, es B: A –