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



Download 6,27 Mb.
Pdf ko'rish
bet156/658
Sana12.06.2023
Hajmi6,27 Mb.
#950840
1   ...   152   153   154   155   156   157   158   159   ...   658
Bog'liq
CLR via C Programmirovanie na platforme Microsoft NET Framework 4 5 na yazyke C

ПриМеЧание
Компилятор.инициализирует.все.поля.при.помощи.соответствующего.синтаксиса.
перед.вызовом.конструктора.базового.класса.для.поддержания.представления.
о.том,.что.все.поля.имеют.корректные.значения,.обозначенные.в.исходном.коде .По-
тенциальная.проблема.может.возникнуть.в.тех.случаях,.когда.конструктор.базового.
класса.вызывает.виртуальный.метод,.осуществляющий.обратный.вызов.в.метод,.
определенный.в.производном.классе .В.этом.случае.поля.инициализируются.при.
помощи.соответствующего.синтаксиса.перед.вызовом.виртуального.метода 


218
Глава.8 .Методы
Поскольку в показанном ранее классе определены три конструктора, компиля-
тор трижды генерирует код, инициализирующий поля 
m_x

m_s
и 
m_d
: по одному 
разу для каждого из конструкторов. Если имеется несколько инициализируемых 
экземплярных полей и множество перегруженных методов-конструкторов, стоит 
подумать о том, чтобы определить поля без инициализации; создать единственный 
конструктор, выполняющий общую инициализацию, и заставить каждый метод-
конструктор явно вызывать конструктор, выполняющий общую инициализацию. 
Этот подход позволит уменьшить размер генерируемого кода. Следующий пример 
иллюстрирует использование способности C# явно заставлять один конструктор 
вызывать другой конструктор посредством зарезервированного слова 
this
:
internal sealed class SomeType {
// Здесь нет кода, явно инициализирующего поля
private Int32 m_x;
private String m_s; 
private Double m_d; 
private Byte m_b;
// Код этого конструктора инициализирует поля значениями по умолчанию 
// Этот конструктор должен вызываться всеми остальными конструкторами
public SomeType() {
m_x = 5;
m_s = "Hi there";
m_d = 3.14159;
m_b = 0xff; 
}
// Этот конструктор инициализирует поля значениями по умолчанию, 
// а затем изменяет значение m_x
public SomeType(Int32 x) : this() {
m_x = x; 
}
// Этот конструктор инициализирует поля значениями по умолчанию,
// а затем изменяет значение m_s
public SomeType(String s) : this() {
m_s = s;
}
// Этот конструктор инициализирует поля значениями по умолчанию,
// а затем изменяет значения m_x и m_s
public SomeType(Int32 x, String s) : this() {
m_x = x;
m_s = s;
}
}



Download 6,27 Mb.

Do'stlaringiz bilan baham:
1   ...   152   153   154   155   156   157   158   159   ...   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