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

Позволяет получить размер в байтах для неуправляемого типа.Used to obtain the size in bytes for an unmanaged type.

К неуправляемым типам относятся:Unmanaged types include:

  • Простые типы, которые перечислены в следующей таблице:The simple types that are listed in the following table:

    Выражение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
  • Типы перечисления.Enum types.

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

  • Определяемые пользователем структуры, которые не содержат полей экземпляров или автоматически реализуемых свойств, являющихся ссылочными или сконструированными типами.User-defined structs that do not contain any instance fields or auto-implemented instance properties that are reference types or constructed 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 simple or enum types no longer requires that code be compiled in an unsafe context.

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

Для всех остальных типов, в том числе для структур, оператор 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