Struct - Layout.Explicit - Konstruktor - Felder vollständig zuweisen

8

Warum, wenn ich Folgendes benutze:

%Vor%

C # sagt, dass ich das Feld "Something" zuweisen muss: / Ich weiß, dass ich einen "Constructor: this ()" erstellen kann aber der Compiler sollte wissen, dass das Feld "Data" das Feld "Something" enthält.

Also sollte ich zuerst den parameterlosen Konstruktor aufrufen, ist das der einzige Weg?

    
zgnilec 07.02.2012, 10:41
quelle

3 Antworten

5

Ja, Sie müssen den Standardkonstruktor aufrufen.

%Vor%

Der Compiler generiert dann die folgenden IL-Anweisungen am Anfang Ihres Konstruktors:

%Vor%     
Mårten Wikström 16.11.2015 01:01
quelle
0

Scheint, als ob es nicht möglich ist, und die Diskussion darüber wurde geschlossen:

Hier ist ein Link zu der Diskussion zu diesem Thema:

Ссылка

    
HelloWorld 17.06.2017 16:58
quelle
-2

Sie müssen alle Felder einer Struktur initialisieren, wenn Sie einen benutzerdefinierten Konstruktor definieren. Weitere Informationen hierzu finden Sie unter diesem MSDN-Lernprogramm in structs die Überschrift Konstruktoren und Vererbung.

Hier ist ein Abschnitt, der aus diesem Link extrahiert wurde:

  

Structs können Konstruktoren deklarieren, aber sie müssen Parameter übernehmen. Es ist ein Fehler, einen (parameterlosen) Standardkonstruktor für eine Struktur zu deklarieren. Struct-Mitglieder können keine Initialisierer haben. Ein Standardkonstruktor wird immer bereitgestellt, um die Strukturelemente auf ihre Standardwerte zu initialisieren.

    
Samuel Slade 07.02.2012 10:46
quelle

Tags und Links