Книга: ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание

Ключевое слово sizeof

Ключевое слово sizeof

В заключение обсуждения вопросов, связанных с небезопасным контекстом в C#, рассмотрим ключевое слово sizeof. Как и в C(++), ключевое слово C# sizeof используется для того, чтобы выяснить размер в байтах типа, характеризуемого значениями (но не ссылочного типа), и это ключевое слово может использоваться только в рамках небезопасного контекста. Очевидно, что указанная возможность может оказаться полезной при взаимодействии с неуправляемыми API, созданными на базе C. Использовать ее очень просто.

unsafe {
 Console.WriteLine("Длина short равна {0}.", sizeof(short));
 Console.WriteLine("Длина int равна {0}.", sizeof(int));
 Console.WriteLine("Длина long равна {0}.", sizeof(long));
}

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

struct MyValueType {
 public short s;
 public int i;
 public long l;
}

Тогда ее размеры можно выяснить так.

unsafe {
 Console.WriteLine("Длина short равна {0}.", sizeof(short));
 Console.WriteLine("Длина int равна {0}.", sizeof(int));
 Console.WriteLine("Длина long равна {0}.", sizeof(long));
 Console.WriteLine("Длина MyValueType равна {0}."/ sizeof(MyValueType));
}

Исходный код. Проект UnsafeCode размещен в подкаталоге, соответствующем главе 9.

Оглавление книги


Генерация: 1.465. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз