Ich versuche, die Größe aller meiner Variablen (Werttypen) mit sizeof-Operator zu überprüfen. Ich durch eine der msdn article gegangen, wo es steht geschrieben, dasssizeof-Operator gibt zusätzliche Größe einer Struktur in C#
Für alle anderen Typen, einschließlich structs kann der Operator sizeof nur in unsicheren Code-Blöcke
und auch structs enthalten sollte nicht verwendet werden, Felder oder Eigenschaften, die
Für diese Referenztypen sind, aktivierten die ich in meinen Projekteigenschaften unsicher Zusammenstellung und erstellte Struktur als folgt-
struct EmployeeStruct
{
int empId;
long salary;
}
und verwendet es als folgt-
unsafe
{
size = sizeof(EmployeeStruct);
}
Console.WriteLine("Size of type in bytes is: {0}", size);
Hier bin ich als Ausgangsgröße des Typs in Bytes bekommt: 16 aber an Struktur, indem man sollte es 12 (4 für int und 8 für lang) sein. Kann jemand mir helfen, hier zu verstehen, warum ich 4 Byte zusätzliche Größe bekomme?
Der Link, den Sie gaben, sagt Ihnen: "while sizeof gibt die Größe zurück, wie sie von der Common Language Runtime zugewiesen wurde, ** inklusive Padding **" – DavidG
@EugenePodskal Es ändert sich viel - Leute, die Antworten suchen Ein Problem bei C# wird keine Fragen zu C aufwerfen, sie sind sehr unterschiedliche Sprachen, auch wenn die Antwort dieselbe ist. –
@GediminasMasaitis Dann werden sie diese Frage finden und das Duplikat lesen (naja, zumindest sollten sie). Aber wenn Sie denken, dass es sich lohnt, können Sie eine korrekte kanonische C# -spezifische Antwort schreiben. In diesem Fall würde ich Ihnen auch empfehlen, die Frage in leichter durchsuchbare und auf den Punkt bezogene "sizeof returns value, die größer als erwartet ist" oder etwas in dieser Zeile umzubenennen. –