Net framework 5, а также среды Visual Studio 2012 и C#


Глава.4 .Основы.типов рис. 4.9



Download 6,27 Mb.
Pdf ko'rish
bet98/658
Sana12.06.2023
Hajmi6,27 Mb.
#950840
1   ...   94   95   96   97   98   99   100   101   ...   658
Bog'liq
CLR via C Programmirovanie na platforme Microsoft NET Framework 4 5 na yazyke C

138
Глава.4 .Основы.типов
рис. 4.9.
.Создание.и.инициализация.объекта.Manager
Следующая строка метода 
M3
вызывает статический метод 
Lookup
объекта 
Employee
. При вызове этого метода CLR определяет местонахождение объекта-типа, 
соответствующего типу, в котором определен статический метод. Затем на основании 
таблицы методов объекта-типа среда CLR находит точку входа в вызываемый метод, 
обрабатывает код JIT-компилятором (при необходимости) и передает управление 
полученному машинному коду. Для нашего обсуждения достаточно предположить, 
что метод 
Lookup
объекта 
Employee
выполняет запрос к базе данных, чтобы найти 
сведения о 
Joe
. Допустим также, что в базе данных указано, что 
Joe
занимает долж-
ность менеджера, поэтому код метода 
Lookup
создает в куче новый объект 
Manager

инициализирует его данными 
Joe
и возвращает адрес готового объекта. Адрес раз-
мещается в локальной переменной 
e
. Результат этой операции показан на рис. 4.10.
Следующая строка метода 
M3
вызывает виртуальный экземплярный метод 
GenProgressReport
в 
Employee
. При вызове виртуального экземплярного метода 
CLR приходится выполнять некоторую дополнительную работу. Во-первых, CLR 
обращается к переменной, используемой для вызова, и затем следует по адресу вы-
зывающего объекта. В данном случае переменная 
e
указывает на объект 
Joe
типа 
Manager
. Во-вторых, CLR проверяет у объекта внутренний указатель на объект-тип. 
Затем CLR находит в таблице методов объекта-типа запись вызываемого метода, 
обрабатывает код JIT-компилятором (при необходимости) и вызывает полученный 
машинный код. В нашем случае вызывается реализация метода 
GenProgressReport
в 
Manager
, потому что 
e
ссылается на объект 
Manager
. Результат этой операции 
показан на рис. 4.12.
Заметьте, если метод 
Lookup
в 
Employee
обнаружит, что 
Joe
— это всего лишь 
Employee
, а не 
Manager
, то 
Lookup
создаст объект 
Employee
, в котором указатель на 


139
Как.разные.компоненты.взаимодействуют.во.время.выполнения
объект-тип ссылается на объект-тип 
Employee
; это приведет к тому, что выполнится 
реализация 
GenProgressReport
из 
Employee
, а не из 
Manager
.

Download 6,27 Mb.

Do'stlaringiz bilan baham:
1   ...   94   95   96   97   98   99   100   101   ...   658




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish