Оператор Sizeof в C#


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

Размер

Не самая частая задача, но все же встречающаяся - определение размера типа значения в байтах. Например, вам может понадобиться знать размер при прохождении значения неуправляемого кода или при выделении памяти или пространства стека. При возникновении такой ситуации вы можете определить размер, используя ключевое слово sizeof. Тип может быть стандартным типом значения (принадлежащий к числовым типам данных) или одной из ваших собственных структур. Однако, он не может быть ссылочным типом или структурой с полями или свойствами , которые содержат ссылочные типы.

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

Console.WriteLine(sizeof(double));
Получение размера пользовательских типов

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

struct V3D
{
    int X { get; set; }
    int Y { get; set; }
    int Z { get; set; }
 
    double Length
    {
        get
        {
            return Math.Sqrt(X * X + Y * Y + Z * Z);
        }
    }
}
Чтобы получить размер V3D в примере, мы можем использовать следующий код. Для выполнения этого кода, убедитесь, что вы компилируете его с параметром «разрешить небезопасный код».

unsafe { Console.WriteLine(sizeof(Vector3D)); }
В Framework версии 1.1, все вызовы оператор sizeof должен находиться в блоке небезопасного кода, а уже начиная с версии 2.0 языка C# оператора sizeof можно применять к встроенным типам (int, double) и без небезопасного режима.
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегизаметки, си шарп, операторы




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



Схема организации простого сервера с помощью потоковых сокетов на C#
Урок 16. Введение в контроллеры Laravel
Что такое JVM? Знакомство с виртуальной машиной Java