Поделиться через


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

Позволяет получить размер в байтах для неуправляемого типа. К неуправляемым типам относятся встроенные типы, перечисленные в представленной ниже таблице, а также следующие типы:

  • Перечисляемые типы

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

  • Определяемые пользователем структуры, не содержащие полей или свойств, принадлежащих ссылочным типам

В следующем примере показано, как извлекать размер переменной типа int.

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

Заметки

Начиная с версии 2.0 языка C# при применении оператора sizeof к встроенным типам больше не требуется использовать небезопасный режим.

Оператор sizeof перегрузить нельзя. Возвращаемые оператором sizeof значения принадлежат типу int. В следующей таблице показаны константы, которые заменяются выражениями sizeof, содержащими некоторые операнды встроенных типов.

Выражение

Константа

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

Для всех остальных типов, в том числе для структур, оператор sizeof можно использовать только в блоках небезопасного кода. Можно также использовать метод Marshal.SizeOf, однако значение, возвращаемое этим методом, не всегда совпадает со значением метода sizeof. Метод Marshal.SizeOf возвращает размер после маршалинга типа, тогда как оператор sizeof возвращает размер сразу после выделения памяти средой CLR, включая заполнения.

Пример

    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#. Спецификация языка является предписывающим источником информации о синтаксисе и использовании языка C#.

См. также

Ссылки

Ключевые слова C#

Ключевые слова операторов (Справочник по C#)

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

Небезопасный код и указатели (Руководство по программированию в C#)

Структуры (Руководство по программированию на C#)

Константы (Руководство по программированию на C#)

Основные понятия

Руководство по программированию на C#

Другие ресурсы

Справочник по C#