Wenn Sie idlasm.exe
verwenden il zu studieren, an der Linie, die Sie eine Instanz der Empty
Struktur erstellen, werden Sie sehen:
.maxstack 1
.locals init ([0] valuetype Draft.Empty e)
und die Definition von Empty
Struktur ist:
.class private sequential ansi sealed beforefieldinit Draft.Empty
extends [mscorlib]System.ValueType
{
.pack 0
.size 1
} // end of class Draft.Empty
Wie Sie sehen, weist es beim Erstellen 1 Byte zu und in der Definition ist die Größe dieses Typs 1.
Also ja; Es weist 1 Byte auf dem Stack zu.
Hinweis: Definition von Empty
aus der kompilierten Assembly im Freigabemodus extrahiert.
Ich hoffe, der Compiler optimiert dies. Setzen Sie einen Unterbrechungspunkt auf dieser Linie in Foo und sehen Sie, ob sein Schlag? – Sayse
... – James
Es wäre weg optimiert, wenn Sie die Variable vom Typ 'Int' gemacht haben. Vielleicht würde ein besseres Beispiel die Übergabe der Struktur an eine Funktion beinhalten. –