Warum bekomme ich einen Fehler "enthält keinen Konstruktor, der 0 Argumente akzeptiert"? C #

7

Auf meiner Formularladung habe ich diesen Code:

%Vor%

Ich erhalte jedoch einen Fehler, der besagt, dass '' CycleEvent.CharityCyclists 'keinen Konstruktor enthält, der 0 Argumente enthält ", heißt es, dass der Fehler mit diesem Teil des Codes zu tun hat:

%Vor%

Hier ist meine CharityCyclists-Klasse:

%Vor%

Danke!

    
Danny 06.11.2012, 21:52
quelle

10 Antworten

17

Das liegt daran, dass die Klasse CharityCyclists keinen Konstruktor hat, der keine Argumente akzeptiert.

Der C # -Compiler generiert den Standardkonstruktor für Sie, wenn Sie keine anderen Konstruktoren definieren . Wenn Sie einen Konstruktor selbst definieren (wie Sie haben), generiert der C # -Compiler keinen Standardkonstruktor.

Wenn Sie CharityCyclists ohne Parameter konstruieren möchten, fügen Sie diesen Code der Klasse hinzu:

%Vor%     
driis 06.11.2012, 21:54
quelle
2

Wenn Sie einen Konstruktor für Ihre Klasse zur Verfügung gestellt haben, der Argumente akzeptiert, erstellt der Compiler keinen leeren Konstruktor mehr.

Daher können Sie keinen leeren Konstruktor aufrufen, weil er nicht existiert. Sie müssten explizit den Konstruktor schreiben, der 0 Argumente in Ihrem Klassencode akzeptiert.

    
Zack 06.11.2012 21:59
quelle
1

Sie haben keinen Konstruktor, der keine Argumente annimmt.

müssen Sie

hinzufügen %Vor%

oder so ähnlich

    
Pow-Ian 06.11.2012 21:54
quelle
1

Wenn Sie einen Konstruktor erstellen, der keine 0 Argumente enthält, entfernen Sie automatisch den Standard Konstruktor . Sie sollten einen neuen Standardkonstruktor (ohne Argumente) erstellen, der das Problem beheben wird.

    
Steve Danner 06.11.2012 21:55
quelle
1

Wenn Sie keine Konstruktoren haben, erstellt C # implizit eine leere für Sie. Es ist funktional das gleiche wie Sie schreiben:

%Vor%

Dies geschieht jedoch nur, wenn Sie no -Konstruktoren haben. Du hast einen, also passiert das nicht. Sie müssen explizit einen Konstruktor erstellen, der keine Parameter akzeptiert.

    
tmesser 06.11.2012 21:55
quelle
1

Sie haben keinen Konstruktor für diese Klasse, der keine Argumente hat. Der einzige Konstruktor, den Sie haben, nimmt Parameter. Füge das zu deiner Klasse hinzu:

%Vor%     
Jules 06.11.2012 22:02
quelle
1

Wenn Sie einen Konstruktor deklarieren, erhalten Klassen nicht automatisch einen Standardkonstruktor. Sie müssen einen parameterlosen Konstruktor erstellen, um das Problem zu beheben, oder Sie müssen den Parameter aufrufen, der die Parameter akzeptiert.

    
JG in SD 06.11.2012 21:54
quelle
0

Fügen Sie dies der Klasse CharityCyclists hinzu:

%Vor%

Sie können die Zeile nicht codieren:

%Vor%

es sei denn, Sie haben diesen Konstruktor.

    
code4life 06.11.2012 21:55
quelle
0

In .NET gibt es implizit einen args (parameterless) -Konstruktor, wenn keine anderen Konstruktoren deklariert wurden. Sobald Sie einen Konstruktor mit Parametern deklariert haben, müssen Sie auch explizit einen anderen Konstruktor ohne Parameter deklarieren, damit der Code mit dem Kompilieren fortfährt.

    
Babak Naffas 06.11.2012 21:56
quelle
0

Sie versuchen, eine Instanz der CharityCyclists-Klasse "radfahrer1" ohne diese Instanzen zu instanziieren Argumente - das erfordert einen Konstruktor ohne Argumente.

Aber die Definition der CharityCyclists-Klasse hat nur einen Konstruktor mit 9 Argumenten. Da dieser Konstruktor 9 Argumente benötigt, wird cradist1 nicht mit diesem Konstruktor übereinstimmen. Sie benötigen einen Konstruktor, der keine Argumente wie folgt akzeptiert:

%Vor%     
A B 06.11.2012 21:57
quelle

Tags und Links