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



Download 6,27 Mb.
Pdf ko'rish
bet322/658
Sana12.06.2023
Hajmi6,27 Mb.
#950840
1   ...   318   319   320   321   322   323   324   325   ...   658
Bog'liq
CLR via C Programmirovanie na platforme Microsoft NET Framework 4 5 na yazyke C

таблица 17.1.
.Важнейшие.закрытые.поля.класса.MulticastDelegate
Поле
тип
Описание
_target
System.Object
Если делегат является оболочкой статического 
метода, это поле содержит значение null. Если де-
легат является оболочкой экземплярного метода, 
поле ссылается на объект, с которым будет работать 
метод обратного вызова. Другими словами, поле 
указывает на значение, которое следует передать 
параметру this экземплярного метода
_methodPtr
System.IntPtr
Внутреннее целочисленное значение, используемое 
CLR для идентификации метода обратного вызова
_invocationList System.Object
Это поле обычно имеет значение null. Оно может 
ссылаться на массив делегатов при построении из 
них цепочки (об этом мы поговорим чуть позже)
Обратите внимание, что конструктор всех делегатов принимает два параметра: 
ссылку на объект и целое число, ссылающееся на метод обратного вызова. Но в тексте 
исходного кода туда передаются такие значения, как 
Program.FeedbackToConsole
или 
p.FeedbackToFile
. Вероятно, весь ваш опыт программирования подсказывает, 
что этот код компилироваться не будет!
Однако компилятор знает о том, что создается делегат, и, проанализировав код, 
определяет объект и метод, на которые мы ссылаемся. Ссылка на объект передается 
в параметре 
object
конструктора. Специальное значение 
IntPtr
(получаемое из 
маркеров метаданных 
MethodDef
или 
MemberRef
), идентифицирующее метод, пере-
дается в параметре 
method
. В случае статических методов параметр 
object
передает 
значение 
null
. Внутри конструктора значения этих двух аргументов сохранятся в 
закрытых полях 
_target
и 
_methodPtr
соответственно. Кроме того, конструктор 
присваивает значение 
null
полю 
_invocationList
. О назначении этого поля мы 
подробно поговорим в разделе, посвященном цепочкам делегатов.
Таким образом, любой делегат — это всего лишь обертка для метода и обрабаты-
ваемого этим методом объекта. Поэтому в следующих строчках кода переменные 
fbStatic
и 
fbInstance
ссылаются на два разных объекта 
Feedback
, инициализи-
рованных, как показано на рис. 17.2:
Feedback fbStatic = new Feedback(Program.FeedbackToConsole);
Feedback fbInstance = new Feedback(new Program().FeedbackToFile);



Download 6,27 Mb.

Do'stlaringiz bilan baham:
1   ...   318   319   320   321   322   323   324   325   ...   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