Warum ist der base () Konstruktor nicht notwendig?

8

Ich habe eine Klassenstruktur wie

%Vor%

Sehen Sie sich nun die notierte Zeile an. Wenn Sie : base() entfernen, wird es ohne einen Fehler kompiliert.

Warum ist das? Gibt es eine Möglichkeit, dieses Verhalten zu deaktivieren?

    
Earlz 31.03.2010, 20:59
quelle

3 Antworten

7

Es gibt eine implizite : base() , wenn Sie nichts hinzufügen ( : base(...) oder : this(...) ). Um es explizit zu machen, fügen Sie dem Basiskonstruktor einen Parameter hinzu. Dann kann es nicht implizit sein.

Zum Beispiel:

%Vor%     
Marc Gravell 31.03.2010, 21:02
quelle
1

17.10.4 Standardkonstruktoren :

  

Wenn eine Klasse keine Instanz enthält   Konstruktordeklarationen, ein Standard   Instanzkonstruktor ist automatisch   unter der Voraussetzung. 2 Dieser Standardkonstruktor   ruft einfach das Parameterlose auf   Konstruktor der direkten Basisklasse.   3 Wenn die direkte Basisklasse dies nicht tut   haben einen zugänglichen parameterlosen   Instanzkonstruktor, eine Kompilierzeit   Fehler tritt auf. 4 Wenn die Klasse ist   abstrakt dann das erklärt   Zugänglichkeit für den Standard   Konstruktor ist geschützt. 5 Ansonsten   die erklärte Erreichbarkeit für die   Der Standardkonstruktor ist public

    
Darin Dimitrov 31.03.2010 21:05
quelle
0
  

Warum ist das?

Dieser Artikel erklärt es.

  

Gibt es eine Möglichkeit, dies zu deaktivieren?   Verhalten?

Nein. Es tut mir leid (aber ... Siehe Mark-Antwort für eine Abhilfe:)

    
SDReyes 31.03.2010 21:03
quelle

Tags und Links