Определение членов типов в CIL
Определение членов типов в CIL
Вы уже знаете, что типы .NET могут определить различные члены. Перечни содержат некоторый набор пар имен и значений. Структуры и классы могут иметь конструкторы, поля, методы, свойства, статические члены и т.д. В предыдущих 14 главах вы уже могли видеть фрагменты определений CIL для таких элементов, но тем не менее, ниже предлагается краткая сводка того, как различные члены отображаются в примитивы CIL.
Таблица 15.4. Связь между типами базовых классов .NET и ключевыми словами C#, а также их проекция в CIL
Тип базового класса .NET Ключевое слово C# Представление CIL Обозначение для константы CIL System.SByte sbyte int8 I1 System.Byte byte unsigned int8 U1 System.Int16 short int16 I2 System.UInt16 ushort unsigned int16 U2 System.Int32 int int32 I4 System.UInt32 uint unsigned int32 U4 System.Int64 long int64 I8 System.UInt64 ulong unsigned int64 U8 System.Char char char CHAR System.Single float float32 R4 System.Double double float64 R8 System.Boolean bool bool BOOLEAN System.String string string – System.Object object object – System.Void void void VOIDБолее 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Поиск членов
Поиск членов Предположим, вы не помните, какой из модулей программного кода содержит нужную вам процедуру или какой из объектов имеет определенный метод или событие. Вместо того чтобы в этом случае копаться в своих модулях с помощью окна проводника проекта или вызывать
Определение своих собственных типов данных
Определение своих собственных типов данных Если вы не математик, многомерные массивы данных одного типа вам, скорее всего, вряд ли понадобятся. В практических задачах управления данными чаще приходится работать с наборами элементов совершенно разных типов. В
5.6. Определение ограниченных типов значений
5.6. Определение ограниченных типов значений ПроблемаТребуются самопроверяющиеся типы числовых данных, представляющие числа в ограниченном диапазоне допустимых значений, гаком как часы в сутках или минуты в часе.РешениеПри работе с датами и временем часто возникает
Определение членов класса
Определение членов класса Все члены класса по характеру доступа к ним делятся на четыре категории: закрытые (private), защищенные (protected), открытые (public) и опубликованные (published).Элементы класса, определенные в разделе public, без каких-либо ограничений открыты для доступа извне
Доступность членов
Доступность членов Прежде чем двигаться дальше, мы должны обсудить вопрос доступности, или "видимости" членов. Члены (методы, поля, конструкторы и т.д.) данного класса или структуры должны указать свой уровень доступности. Если член определяется без указания ключевого
Синтаксис инициализации членов-переменных
Синтаксис инициализации членов-переменных Типы класса обычно имеют множество членов-переменных (также называемых полями). Если в классе можно определять множество конструкторов, то может возникнуть не слишком радующая программиста необходимость многократной записи
Тестирование переопределенных членов
Тестирование переопределенных членов Теперь можно проверить обновленный класс Person. Добавьте следующий программный код в метод Main() и сравните результат его выполнения с тем, что показано на рис. 3.18.static void Main (string[] args) { // ВНИМАНИЕ: эти объекты должны быть идентичными. Person
Определение типов класса
Определение типов класса Пустые пространства имен не представляют собой большого интереса, поэтому давайте выясним, как в CIL определяется тип класса. Вполне логично, что для этого используется директива .class. Однако эта простая директива может иметь множество
Определение конструкторов типов
Определение конструкторов типов Система CTS (общая система типов) поддерживает конструкторы как уровня экземпляра, так и уровня класса (статические конструкторы). В терминах CIL для конструкторов уровня экземпляра используется лексема .ctor, а для статических конструкторов
Определение параметров членов
Определение параметров членов Теперь предположим, что нужно определить методы, имеющие аргументы. По сути, указание аргументов в CIL (приблизительно) соответствует аналогичной операции в C#. Например, аргумент определяется с помощью указания типа данных после имени
14.5. Список инициализации членов
14.5. Список инициализации членов Модифицируем наш класс Account, объявив член _name типа string:#include stringclass Account {public:// ...private:unsigned int _acct_nmbr;double _balance;string _name;};Придется заодно изменить и конструкторы. Возникает две проблемы: поддержание совместимости с первоначальным
17.2. Идентификация членов иерархии
17.2. Идентификация членов иерархии В разделе 2.4 мы уже упоминали о том, что в объектном проектировании обычно есть один разработчик, который конструирует и реализует класс, и много пользователей, применяющих предоставленный открытый интерфейс. Это разделение
18.3.2. Открытие отдельных членов
18.3.2. Открытие отдельных членов Когда мы применили закрытое наследование класса PeekbackStack от IntArray, то все защищенные и открытые члены IntArray стали закрытыми членами PeekbackStack. Было бы полезно, если бы пользователи PeekbackStack могли узнать размер стека с помощью такой
8.5.9 Видимость Имен Членов
8.5.9 Видимость Имен Членов Члены класса, описанные с ключевым словом class, являюся закрытыми, то есть, их имена могут использоваться только функциями членами (#8.5.2) и друзьями (см. #8.5.10), если они не стоят после метки «public:». В этом случае они являются открытыми. Открытый член
7.2 Определение типов и содержания документов
7.2 Определение типов и содержания документов Ниже дана схема основных типов программных документов. Данная схема не является исчерпывающей или окончательной, но будет служить контрольной таблицей основных типов программных документов, которые руководители должны