Ключевое слово 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.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
R.5.3.2 Операция sizeof
R.5.3.2 Операция sizeof Операция sizeof вычисляет размер своего операнда в байтах. Операнд должен быть или выражением, которое не вычисляется, или именем типа в скобках. Операцию sizeof нельзя применять к функции, битовому полю, неопределенному классу, типу void или к массиву с
Ключевое средство отладки: окно Watches
Ключевое средство отладки: окно Watches Когда вы освоите работу с окном Locals, работа с окном Watches (Окно контролируемых выражений) покажется просто забавой. Окно Watches делает, по сути, то же самое, что и окно Locals, но с одним очевидным отличием - те выражения, значения которых будут
Ключевое слово static
Ключевое слово static Как уже говорилось в этой главе, члены классов (и структур) в C# могут определяться с ключевым cловом static В этом случае соответствующий член должен вызываться непосредственно на уровне класса, а не экземпляра типа. Для иллюстрации рассмотрим "знакомый"
Хранение семейных тайн: ключевое слово protected
Хранение семейных тайн: ключевое слово protected Вы уже знаете, что открытые элементы непосредственно доступны отовсюду, а приватные элементы недоступны для объектов вне класса, определяющего эти элементы. Язык C#, занимающий лидирующие позиции среда многих других
Получение интерфейсных ссылок: ключевое слово as
Получение интерфейсных ссылок: ключевое слово as Второй способ проверить поддержку интерфейса для данного типа предполагает использование ключевого слова as, о котором уже шла речь в главе 4. Если объект можно интерпретировать, как указанный интерфейс, будет возвращена
Получение интерфейсных ссылок: ключевое слово is
Получение интерфейсных ссылок: ключевое слово is Можно также проверить реализацию интерфейса с помощью ключевого слова is. Если соответствующий объект не совместим указанным интерфейсом, будет возвращено значение false. А если тип совместим с интерфейсом, вы можете смело
Ключевое слово checked
Ключевое слово checked Вы, несомненно, прекрасно знаете, что любой числовой тип данных имеет свои строго заданные верхний и нижний пределы (значения которых можно выяснить программными средствами с помощью свойств MaxValue и MinValue). При выполнении арифметических операций с
Ключевое слово unchecked
Ключевое слово unchecked В предположении, что вы активизировали проверку переполнения для всего проекта, как разрешить игнорирование переполнений для тех блоков программного кода, где "молчаливая реакция" на переполнение вполне приемлема? Поскольку флаг /checked предполагает
КЛЮЧЕВОЕ СЛОВО return
КЛЮЧЕВОЕ СЛОВО return Принципы программирования на языке Си основаны на понятии функции. В представленных ранее примерах программирования мы уже воспользовались несколькими функциями: printf( ), scanf( ), getchar( ), putchar( ) и strlen( ). Эти функции являются системными, однако мы
4.8. Оператор sizeof
4.8. Оператор sizeof Оператор sizeof возвращает размер в байтах объекта или типа данных. Синтаксис его таков:sizeof ( type name );sizeof ( object );sizeof object;Результат имеет специальный тип size_t, который определен как typedef в заголовочном файле cstddef. Вот пример использования обеих форм оператора
Ключевое слово this
Ключевое слово this Ключевое слово this представляет собой указатель на текущий объект класса. Методы класса могут использовать ключевое слово this чтобы получить указатель на объект для которого вызван данный метод. Указатель this представляет собой постоянную величину, вы не
7.2.2 Sizeof
7.2.2 Sizeof Операция sizeof дает размер операнда в байтах. (Байт не определяется языком иначе, чем через значение sizeof. Однако, во всех существующих реализациях байт есть пространтсво, нобходимое для хранения char.) При применении к массиву рзультатом является полное количество
Операции typeof и sizeof
Операции typeof и sizeof Операция sizeof(имя типа) возвращает для этого типа его размер в байтах.Операция typeof(имя типа) возвращает для этого типа объект класса System.Type. Приведем пример использования typeof: type Base = class ... end; Derived = class(Base) ... end; var b: Base := new Derived; begin writeln(b.GetType = typeof(Derived));
Заключительное слово
Заключительное слово Фух! Вот уж не ожидал, что это займёт столько времени.Надеюсь, эта книга навеяла вам несколько полезных идей, будь вы новичками или уже бывалыми специалистами.Поскольку Scrum всё равно необходимо подстраивать под каждую конкретную среду, спор по поводу