sizeof (C#-Referenz)
Wird verwendet, um für einen nicht verwalteten Typ die Größe in Bytes zu erhalten. Zu den nicht verwalteten Typen gehören die integrierten Datentypen in der nachfolgenden Tabelle sowie die folgenden:
Enumerationstypen
Zeigertypen
Benutzerdefinierte Strukturen ohne Felder oder Eigenschaften, die Verweistypen darstellen.
Im folgenden Beispiel wird veranschaulicht, wie die Größe eines int-Typs abgerufen wird:
// Constant value 4:
int intSize = sizeof(int);
Hinweise
Ab Version 2.0 von C# ist der unsafe-Modus für die Anwendung von sizeof auf integrierte Typen nicht mehr erforderlich.
Der Operator sizeof kann nicht überladen werden. Die vom Operator sizeof zurückgegebenen Werte sind vom Typ int. In der folgenden Tabelle werden die konstanten Werte angezeigt, die durch sizeof-Ausdrücke mit bestimmten integrierten Datentypen als Operanden ersetzt werden.
Ausdruck |
Konstantenwert |
---|---|
sizeof(sbyte) |
1 |
sizeof(byte) |
1 |
sizeof(short) |
2 |
sizeof(ushort) |
2 |
sizeof(int) |
4 |
sizeof(uint) |
4 |
sizeof(long) |
8 |
sizeof(ulong) |
8 |
sizeof(char) |
2 (Unicode) |
sizeof(float) |
4 |
sizeof(double) |
8 |
sizeof(decimal) |
16 |
sizeof(bool) |
1 |
Für alle Typen einschließlich Strukturen kann der Operator sizeof nur in nicht sicheren Codeblocks verwendet werden. Sie können zwar die Marshal.SizeOf-Methode verwenden, jedoch stimmt der von dieser Methode zurückgegebene Wert nicht immer mit dem Wert überein, der von sizeof zurückgegeben wird. Marshal.SizeOf gibt die Größe des Typs nach dem Marshalling zurück. sizeof hingegen gibt die Größe des Typs nach Zuweisung durch die Common Language Runtime einschließlich Leerspeicher zurück.
Beispiel
class MainClass
{
// unsafe not required for primitive types
static void Main()
{
Console.WriteLine("The size of short is {0}.", sizeof(short));
Console.WriteLine("The size of int is {0}.", sizeof(int));
Console.WriteLine("The size of long is {0}.", sizeof(long));
}
}
/*
Output:
The size of short is 2.
The size of int is 4.
The size of long is 8.
*/
C#-Programmiersprachenspezifikation
Weitere Informationen erhalten Sie unter C#-Sprachspezifikation. Die Sprachspezifikation ist die verbindliche Quelle für die Syntax und Verwendung von C#.
Siehe auch
Referenz
Operatorschlüsselwörter (C#-Referenz)
Unsicherer Code und Zeiger (C#-Programmierhandbuch)
Strukturen (C#-Programmierhandbuch)
Konstanten (C#-Programmierhandbuch)