Die gemeinsame Lösung ist eine statische Methode der Art gehören, zu nennen Das kann den Wert des Parameters berechnen, der an den Basiskonstruktor übergeben werden soll.
Zum Beispiel:
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;
}
Sie beachten Sie, dass CalculateZ
keine Instanzmethode sein kann, weil die this
Referenz in Konstruktor Initialisierungen nicht verfügbar ist.
Von dem sprach Spezifikation 10.11.1 Constructor initializers:
Ein Instanzkonstruktors initializer kann nicht die Instanz zugreifen erstellt wird. Daher ist es ein Kompilierzeitfehler dieses in einem Argumente Expression des Konstruktor Initialisierer referenzieren, wie es ist, ein Kompilierzeitfehler für ein Argument Ausdruck jede Instanz Element durch einen einfachen Namen zu referenzieren.
BEARBEITEN: In der Beschreibung 'Instanz' in 'statisch' geändert.
Was? ist "B: A"? Wenn ja, wie kann A * mehr * Daten als B haben? Außerdem scheint A keinen solchen Konstruktor zu haben ... – Kobi
Meinst du öffentliche Klasse B: A {in deinem Beispiel? –
Bearbeiteter Originalbeitrag. Ja, es ist B: A –