sizeof (C#-Referenz)sizeof (C# Reference)

Wird verwendet, um die Größe eines nicht verwalteten Typs in Bytes abzurufen.Used to obtain the size in bytes for an unmanaged type. Nicht verwaltete Typen umfassen die in der unteren Tabelle aufgelisteten integrierten Typen sowie folgende Typen:Unmanaged types include the built-in types that are listed in the table that follows, and also the following:

  • EnumerationstypenEnum types

  • ZeigertypenPointer types

  • Benutzerdefinierte Strukturen, die keine Felder oder Eigenschaften enthalten, die Verweistypen sindUser-defined structs that do not contain any fields or properties that are reference types

Im folgenden Beispiel wird gezeigt, wie Sie die Größe von int abrufen:The following example shows how to retrieve the size of an int:

// Constant value 4:  
int intSize = sizeof(int);   

HinweiseRemarks

Ab C# Version 2.0 muss für das Anwenden von sizeof auf integrierte Typen nicht länger der Modus unsafe (unsicher) verwendet werden.Starting with version 2.0 of C#, applying sizeof to built-in types no longer requires that unsafe mode be used.

Der Operator sizeof kann nicht überladen werden.The sizeof operator cannot be overloaded. Die Rückgabewerte des Operators sizeof sind vom Typ int.The values returned by the sizeof operator are of type int. Die folgende Tabelle zeigt die konstanten Werte, die als Ersatz für sizeof-Ausdrücke dienen, die über bestimmte integrierte Typen als Operanden verfügen.The following table shows the constant values that are substituted for sizeof expressions that have certain built-in types as operands.

AusdruckExpression Konstanter WertConstant value
sizeof(sbyte) 11
sizeof(byte) 11
sizeof(short) 22
sizeof(ushort) 22
sizeof(int) 44
sizeof(uint) 44
sizeof(long) 88
sizeof(ulong) 88
sizeof(char) 2 (Unicode)2 (Unicode)
sizeof(float) 44
sizeof(double) 88
sizeof(decimal) 1616
sizeof(bool) 11

Bei allen anderen Typen, darunter Strukturen, kann der Operator sizeof nur in unsicheren Codeblöcken zugelassen werden.For all other types, including structs, the sizeof operator can be used only in unsafe code blocks. Sie können die Methode Marshal.SizeOf zwar verwenden, der von dieser Methode zurückgegebene Wert entspricht allerdings nicht immer dem von sizeof zurückgegeben Wert.Although you can use the Marshal.SizeOf method, the value returned by this method is not always the same as the value returned by sizeof. Marshal.SizeOf gibt die Größe nach dem Marshalling des Typs zurück, während sizeof die Größe inklusive Abständen zurückgibt, die von der Common Language Runtime zugeordnet wurde.Marshal.SizeOf returns the size after the type has been marshaled, whereas sizeof returns the size as it has been allocated by the common language runtime, including any padding.

BeispielExample

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#-ProgrammiersprachenspezifikationC# Language Specification

Weitere Informationen erhalten Sie unter C#-Sprachspezifikation. Die Sprachspezifikation ist die verbindliche Quelle für die Syntax und Verwendung von C#.

Siehe auchSee Also

C#-ReferenzC# Reference
C#-ProgrammierhandbuchC# Programming Guide
C#-SchlüsselwörterC# Keywords
OperatorschlüsselwörterOperator Keywords
enumenum
Unsicherer Code und ZeigerUnsafe Code and Pointers
StrukturenStructs
KonstantenConstants