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



Download 6,27 Mb.
Pdf ko'rish
bet89/658
Sana12.06.2023
Hajmi6,27 Mb.
#950840
1   ...   85   86   87   88   89   90   91   92   ...   658
Bog'liq
CLR via C Programmirovanie na platforme Microsoft NET Framework 4 5 na yazyke C

Приведение типов
Одна из важнейших особенностей CLR — 
безопасность типов
(type safety). Во время 
выполнения программы среде CLR всегда известен тип объекта. Программист всегда 
может точно определить тип объекта при помощи метода 
GetType
. Поскольку это 
невиртуальный метод, никакой тип не сможет сообщить о себе ложные сведения. 
Например, тип 
Employee
не может переопределить метод 
GetType
, чтобы тот вернул 
тип 
SuperHero
.
При разработке программ часто прибегают к приведению объекта к другим типам. 
CLR разрешает привести тип объекта к его собственному типу или любому из его 
базовых типов. В каждом языке программирования приведение типов реализова-
но по-своему. Например, в C# нет специального синтаксиса для приведения типа 
объекта к его базовому типу, поскольку такое приведение считается безопасным 


125
Приведение.типов
неявным преобразованием. Однако для приведения типа к производному от него 
типу разработчик на C# должен ввести операцию явного приведения типов — не-
явное преобразование приведет к ошибке. Следующий пример демонстрирует 
приведение к базовому и производному типам:
// Этот тип неявно наследует от типа System.Object
internal class Employee { 
... 

public sealed class Program { 
public static void Main() { 
// Приведение типа не требуется, т. к. new возвращает объект Employee,
// а Object — это базовый тип для Employee. 
Object o = new Employee(); 
// Приведение типа обязательно, т. к. Employee — производный от Object
// В других языках (таких как Visual Basic) компилятор не потребует 
// явного приведения
Employee e = (Employee) o; 


Этот пример показывает, что необходимо компилятору для компиляции кода. 
Теперь посмотрим, что произойдет во время выполнения программы. CLR проверит 
операции приведения, чтобы приведение типов осуществлялось либо к факти-
ческому типу объекта, либо к одному из его базовых типов. Например, следую-
щий код успешно компилируется, но в период выполнения выдает исключение 
InvalidCastException
:
internal class Employee { 
... 

internal class Manager : Employee { 
... 

public sealed class Program { 
public static void Main() { 
// Создаем объект Manager и передаем его в PromoteEmployee
// Manager ЯВЛЯЕТСЯ производным от Employee, 
// поэтому PromoteEmployee работает
Manager m = new Manager(); 
PromoteEmployee(m);
// Создаем объект DateTime и передаем его в PromoteEmployee
// DateTime НЕ ЯВЛЯЕТСЯ производным от Employee, 
// поэтому PromoteEmployee выбрасывает 
// исключение System.InvalidCastException
DateTime newYears = new DateTime(2013, 1, 1); 
PromoteEmployee(newYears); 

продолжение



126
Download 6,27 Mb.

Do'stlaringiz bilan baham:
1   ...   85   86   87   88   89   90   91   92   ...   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