Benutzer mit den meisten Antworten
(C#) Was ist ein Standard-Konstruktor ?

Frage
Antworten
-
Hallo,
wenn du eine Klasse- oder eine Struktur anlegst, dann sieht diese zunächst so aus:class MyClass{} struct MyStruct{}
Es sind einfach 2 Typen, in unserem Fall ohne irgendwelche Eigenschaften oder Methoden aber auch ohne Konstruktoren. Trotzdem kann man beide instanziieren:
MyClass mc = new MyClass(); MyStruct ms = new MyStruct();
Klassen sind so konzipiert, dass sie einen Standard Konstruktor ohne Parameter haben. Dieser ist einfach leer, macht also nichts außer die Klasse zu initialisieren. Du musst ihn nicht explizit erstellen, denn er wird immer erzeugt, wenn keine anderen Konstruktoren vorhanden sind.
Erzeugst du nun aber einen anderen Konstruktor in der Klasse, erstellt der Compiler keinen Standard Konstruktor mehr. Das hat den Vorteil, dass du dich bei einfachen Klassen nicht um den Konstruktor kümmern musst, bei komplexen Klassen jedoch alles frei abändern kannst.Bei Strukturen ist es ein wenig anders. Diese haben immer einen Parameterlosen Standard Konstruktor. Diese ist immer vorhanden und muss immer aufgerufen werden. Er macht auch nichts, ihn kann man aber auch nicht entfernen. Dadurch wird es möglich, das du immer eine Instanz der Struktur erstellen kannst, ohne Parameter angeben zu müssen.
Es ist jedoch möglich, Überladungen für diesen Konstruktor anzufertigen. Also solche, die Parameter entgegen nehmen. In diesem Fall musst du zuerst den implizit erstellten Standard Konstruktor aufrufen, danach kannst du den Rest nach belieben initialisieren. Dadurch wird es möglich, das der Benutzer Parameter übergeben kann, es aber nicht muss.struct MyStruct{ public MyStruct(int parameter) :this()//Den Standard Konstruktor aufrufen { //Initialisiere die Struktur } }
Tom Lambert - C# MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets- Als Antwort vorgeschlagen Aleksander Chalabashiev Montag, 5. Januar 2015 08:35
- Als Antwort markiert Aleksander Chalabashiev Freitag, 9. Januar 2015 08:37
Alle Antworten
-
Ein Standartkostruktor ist der Konstrutkor ohne Parameter bei Klassen und der implizit vohanden, nicht überschreibbare bei einer Struktur.
Beispiel:
public class A { public A() { } //Standart public A(string name) { /* ... */ } //Andere Konstrutkoren } //Bei Strukturen public struct MStr { public MStr() { } //! Nicht erlaubt, da dieser bereits implizit (durch den Compiler) vorhanden ist. pub MStr(string param) { /* ... */ } //Nicht-Standart Konstrutkor. }
© 2015 Thomas Roskop
-
Ein Konstruktor (Methode zum erzeugen einer Klasse) ohne Parameter, der Standard Mäßig vorhanden ist.
Den Standard-Konstruktor brauchst in C# nicht zu Implementieren (Fachwort für Quellcode schreiben), solange du keinen weiteren Konstruktor (mit Parametern (Übergabe Werten) implementierst.
MFG
Björn
-
Hallo,
wenn du eine Klasse- oder eine Struktur anlegst, dann sieht diese zunächst so aus:class MyClass{} struct MyStruct{}
Es sind einfach 2 Typen, in unserem Fall ohne irgendwelche Eigenschaften oder Methoden aber auch ohne Konstruktoren. Trotzdem kann man beide instanziieren:
MyClass mc = new MyClass(); MyStruct ms = new MyStruct();
Klassen sind so konzipiert, dass sie einen Standard Konstruktor ohne Parameter haben. Dieser ist einfach leer, macht also nichts außer die Klasse zu initialisieren. Du musst ihn nicht explizit erstellen, denn er wird immer erzeugt, wenn keine anderen Konstruktoren vorhanden sind.
Erzeugst du nun aber einen anderen Konstruktor in der Klasse, erstellt der Compiler keinen Standard Konstruktor mehr. Das hat den Vorteil, dass du dich bei einfachen Klassen nicht um den Konstruktor kümmern musst, bei komplexen Klassen jedoch alles frei abändern kannst.Bei Strukturen ist es ein wenig anders. Diese haben immer einen Parameterlosen Standard Konstruktor. Diese ist immer vorhanden und muss immer aufgerufen werden. Er macht auch nichts, ihn kann man aber auch nicht entfernen. Dadurch wird es möglich, das du immer eine Instanz der Struktur erstellen kannst, ohne Parameter angeben zu müssen.
Es ist jedoch möglich, Überladungen für diesen Konstruktor anzufertigen. Also solche, die Parameter entgegen nehmen. In diesem Fall musst du zuerst den implizit erstellten Standard Konstruktor aufrufen, danach kannst du den Rest nach belieben initialisieren. Dadurch wird es möglich, das der Benutzer Parameter übergeben kann, es aber nicht muss.struct MyStruct{ public MyStruct(int parameter) :this()//Den Standard Konstruktor aufrufen { //Initialisiere die Struktur } }
Tom Lambert - C# MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets- Als Antwort vorgeschlagen Aleksander Chalabashiev Montag, 5. Januar 2015 08:35
- Als Antwort markiert Aleksander Chalabashiev Freitag, 9. Januar 2015 08:37