Внутреннее представление индексаторов типов
Внутреннее представление индексаторов типов
Мы рассмотрели примеры метода индексатора в C#, и пришло время выяснить, как представляются индексаторы в терминах CIL. Если открыть числовой индексатор типа Garage, то будет видно, что компилятор C# создает свойство Item, которое сводится к подходящей паре методов get/set.
property instance class SimpleIndexer.Car Item(int32) {
.get instance class SimpleIndexer.Car SimpleIndexer.Garage::get_Item(int32)
.set instance void SimpleIndexer.Garage::set_Item(int32, class SimpleIndexer.Car)
} // end of property Garage::Item
Методы get_Item() и set_Item() будут реализованы аналогично любому другому свойству .NET, например:
method public hidebysig specialname instance сlass SimpleIndexer.Car get_Item(int32 pos) cil managed {
Code size 22 (0x16)
.maxstack 2
.locals init ([0] class SimpleIndexer.Car CSS1$0000)
IL_0000: ldarg.0
IL_0001: ldfld class [mscorlib] System.Collections.ArrayList SimpleIndexer.Garage::carArray
IL_0006: ldarg.1
IL_0007: callvirt instance object [mscorlib] Sysftem.Collections.ArrayList::get_Item(int32)
IL_000c: castclass SimpleIndexer.Car
IL_0011: stloc.0
IL_0012: br.s IL_0014
IL_0014: ldloc.0
IL_0015: ret
} // end of method Garage::get_Item
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Внутреннее представление переменной jiffies
Внутреннее представление переменной jiffies Переменная jiffies исторически всегда представлялась с помощью типа unsigned long и, следовательно, имеет длину 32 бит для 32-разрядных аппаратных платформ и 64 бит для 64-разрядных. В случае 32-разрядного значения переменной jiffies и частоты
ГЛАВА 4. ВНУТРЕННЕЕ ПРЕДСТАВЛЕНИЕ ФАЙЛОВ
ГЛАВА 4. ВНУТРЕННЕЕ ПРЕДСТАВЛЕНИЕ ФАЙЛОВ Как уже было замечено в главе 2, каждый файл в системе UNIX имеет уникальный индекс. Индекс содержит информацию, необходимую любому процессу для того, чтобы обратиться к файлу, например, права собственности на файл, права доступа к
Урок № 61. Внутреннее перемещение ТМЦ
Урок № 61. Внутреннее перемещение ТМЦ Одной из распространенных операций складского учета является операция по внутреннему перемещению товарно-материальных ценностей внутри предприятия. В этом случае перемещаемые ценности не покидают пределы предприятия, а лишь
Урок № 75. Внутреннее перемещение основных средств
Урок № 75. Внутреннее перемещение основных средств Перемещение объектов основных средств внутри предприятия – это операция, встречающаяся довольно-таки часто. Например, токарный станок может передаваться из производственного цеха в сборочный, оргтехника из отдела
Inner Glow (Внутреннее свечение)
Inner Glow (Внутреннее свечение) Эффект Inner Glow (Внутреннее свечение), аналогично эффекту внутренней тени, позволяет задать свечение элемента по внутреннему его контуру. Во всем остальном его действие совпадает с действием эффекта Outer Glow (Внешнее свечение) (рис. 8.13). Рис. 8.13.
Внутреннее представление свойств в C#
Внутреннее представление свойств в C# Многие программисты (особенно те, которые привыкли использовать C++) стремятся использовать традиционные префиксы get_ и set_ для методов чтения и модификации (например, get_FullName() и set_FullName()). Против самого соглашения возражений нет. Однако
Создание пользовательских индексаторов
Создание пользовательских индексаторов Как программисты, мы прекрасно знаем, что с помощью индексов можно получить доступ к отдельным элементам, содержащимся в стандартном массиве.// Объявление массива целых значений.int[] myInts = {10, 9, 100, 432, 9874};// Использование операции [] для
Внутреннее представление перегруженных операций
Внутреннее представление перегруженных операций Подобно любому элементу программы C#, перегруженные операции представляются специальными элементами синтаксиса CIL. Откройте, например, компоновочный блок OverloadedOps.exe с помощью ildasm.exe. Как показано на рис. 9.1, перегруженные
Внутреннее представление пользовательских подпрограмм преобразования
Внутреннее представление пользовательских подпрограмм преобразования Как и в случае перегруженных операций, те методы, которые обозначены ключевыми словами implicit или explicit, получают "специальные имена" в терминах CIL: op_Implicit и op_Explicit соответственно (рис. 9.2). Рис. 9.2.
Представление типов на стороне клиента
Представление типов на стороне клиента Когда клиент устанавливает ссыпку на Web-сервис, предоставляющий доступ к пользовательским типам, файл класса агента получает определения для каждого отрытого пользовательского типа. Так, если вы посмотрите на представление
Внутреннее устройство Pocket PC
Внутреннее устройство Pocket PC Если не брать в расчет сам факт миниатюрности и отсутствие некоторых привычных на настольном ПК устройств, таких как клавиатура и мышь, то можно считать, что Pocket PC является полноценным компьютером. Мало того, по своим параметрам он является
Внутреннее соединение
Внутреннее соединение Следующий оператор соединяет две таблицы, которые связаны через внешний ключ FK правой таблицы (Table2) и первичный ключ PK таблицы Table1:SELECTТаblе1.PK,Table1.COL1,Table2.PKX,Table2.COLXFROM Table1 INNER JOIN Table2ON Table1.PK = Table2.FKWHERE... условия-поискаЭто спецификация внутреннего
Внутреннее устройство технологии
Внутреннее устройство технологии Когда любой запрос вызывает хранимую процедуру, то текущее определение этой хранимой процедуры копируется в этот момент в кэш метаданных. В Классическом сервере эта копия присутствует в течение всего времени пользовательского
ОПЫТЫ: Внутреннее расследование
ОПЫТЫ: Внутреннее расследование Автор: Сергей ЛеоновСегодня мы займемся варварским делом — разборкой одной из современных цифровых фотокамер. Не слишком часто удается разобрать до винтика подобную технику, но раз уж такая возможность представилась, почему бы не
СРЕДНЕЕ ЗВЕНО: Внутреннее перепрограммирование
СРЕДНЕЕ ЗВЕНО: Внутреннее перепрограммирование Автор: Владимир ГуриевЛюбое изменение рубрикатора заслуживает объяснения - "А это зачем вы картину повесили?" "А она не просто так висит, а дырку на стене закрывает", - однако, как правило, мы им пренебрегаем, полагая, что