sizeof (Справочник по C#)sizeof (C# Reference)

Позволяет получить размер в байтах для неуправляемого типа.Used to obtain the size in bytes for an unmanaged type. К неуправляемым типам относятся встроенные типы, перечисленные в представленной ниже таблице, а также следующие типы:Unmanaged types include the built-in types that are listed in the table that follows, and also the following:

  • типы перечисления;Enum types

  • типы указателей;Pointer types

  • определяемые пользователем структуры, не содержащие полей или свойств, принадлежащих ссылочным типам.User-defined structs that do not contain any fields or properties that are reference types

В приведенном ниже примере показано, как извлекать размер переменной типа int.The following example shows how to retrieve the size of an int:

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

ПримечанияRemarks

Начиная с версии 2.0 языка C# при применении оператора sizeof к встроенным типам больше не требуется использовать небезопасный режим.Starting with version 2.0 of C#, applying sizeof to built-in types no longer requires that unsafe mode be used.

Оператор sizeof перегрузить нельзя.The sizeof operator cannot be overloaded. Возвращаемые оператором sizeof значения принадлежат типу int.The values returned by the sizeof operator are of type int. В приведенной ниже таблице показаны константы, которые заменяются выражениями sizeof, содержащими некоторые операнды встроенных типов.The following table shows the constant values that are substituted for sizeof expressions that have certain built-in types as operands.

ВыражениеExpression КонстантаConstant 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 (Юникод)2 (Unicode)
sizeof(float) 44
sizeof(double) 88
sizeof(decimal) 1616
sizeof(bool) 11

Для всех остальных типов, в том числе для структур, оператор sizeof можно использовать только в блоках небезопасного кода.For all other types, including structs, the sizeof operator can be used only in unsafe code blocks. Несмотря на то, что вы можете использовать метод Marshal.SizeOf, возвращаемое им значение не всегда совпадает со значением, которое возвращает метод sizeof.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 возвращает размер после маршалинга типа, тогда как оператор sizeof возвращает размер сразу после выделения памяти средой CLR, включая заполнения.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.

ПримерExample

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

Дополнительные сведения см. в спецификации языка C#.For more information, see the C# Language Specification. Спецификация языка является предписывающим источником информации о синтаксисе и использовании языка C#.The language specification is the definitive source for C# syntax and usage.

См. такжеSee Also

Справочник по C#C# Reference
Руководство по программированию на C#C# Programming Guide
Ключевые слова в C#C# Keywords
Ключевые слова операторовOperator Keywords
enumenum
Небезопасный код и указателиUnsafe Code and Pointers
СтруктурыStructs
КонстантыConstants