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



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


Глава.8 .Методы
// Обратите внимание: поле m_y здесь не инициализируется
}
}
При компиляции этого типа компилятор C# генерирует сообщение об ошибке: 
(ошибка CS0171: поле 
'SomeValType.m_y'
должно быть полностью определено до 
возвращения управления конструктором):
error CS0171: Field 'SomeValType.m_y' must be fully assigned before control leaves 
the constructor
Чтобы разрешить проблему, конструктор должен ввести в поле 
y
какое-нибудь 
значение (обычно 0).
В качестве альтернативного варианта можно инициализировать все поля зна-
чимого типа, как это сделано здесь:
// C#
позволяет значимым типам иметь конструкторы с параметрами
public SomeValType(Int32 x) {
// Выглядит необычно, но компилируется прекрасно,
// и все поля инициализируются значениями 0 или null
this = new SomeValType();
m_x = x; // Присваивает m_x значение x
// Обратите внимание, что поле m_y было инициализировано нулем
}
В конструкторе значимого типа 
this
представляет экземпляр значимого типа 
и ему можно приписать значение нового экземпляра значимого типа, у которого 
все поля инициализированы нулями. В конструкторах ссылочного типа указатель 
this
считается доступным только для чтения и присваивать ему значение нельзя.
Конструкторы типов
Помимо конструкторов экземпляров, CLR поддерживает конструкторы типов (так-
же известные как 
статические конструкторы

конструкторы классов
и 
инициали-
заторы типов
). Конструкторы типов можно применять и к интерфейсам (хотя C# 
этого не допускает), ссылочным и значимым типам. Подобно тому, как конструкторы 
экземпляров используются для установки первоначального состояния экземпля-
ра типа, конструкторы типов служат для установки первоначального состояния 
типа. По умолчанию у типа не определено конструктора. У типа не может быть 
более одного конструктора; кроме того, у конструкторов типов никогда не бывает 
параметров. Вот как определяются ссылочные и значимые типы с конструкторами 
в программах на C#:
internal sealed class SomeRefType {
static SomeRefType() {
// Исполняется при первом обращении к ссылочному типу SomeRefType
}


223
Конструкторы.типов
}
internal struct SomeValType {
// C# на самом деле допускает определять для значимых типов
// конструкторы без параметров
static SomeValType() {
// Исполняется при первом обращении к значимому типу SomeValType
}
}
Обратите внимание, что конструкторы типов определяют так же, как кон-
структоры экземпляров без параметров за исключением того, что их помечают как 
статические. Кроме того, конструкторы типов всегда должны быть закрытыми (C# 
делает их закрытыми автоматически). Однако если явно пометить в исходном тексте 
программы конструктор типа как закрытый (или как-то иначе), компилятор C# 
выведет сообщение об ошибке: (ошибка CS0515: 
'SomeValType.Some-ValType()'

в статических конструкторах нельзя использовать модификаторы доступа):
error CS0515: 'SomeValType.SomeValType()': access modifiers are not allowed on 
static constructors
Конструкторы типов всегда должны быть закрытыми, чтобы код разработчика 
не смог их вызвать, напротив, в то же время среда CLR всегда способна вызвать 
конструктор типа.

Download 6,27 Mb.

Do'stlaringiz bilan baham:
1   ...   155   156   157   158   159   160   161   162   ...   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