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



Download 6,27 Mb.
Pdf ko'rish
bet245/658
Sana12.06.2023
Hajmi6,27 Mb.
#950840
1   ...   241   242   243   244   245   246   247   248   ...   658
Bog'liq
CLR via C Programmirovanie na platforme Microsoft NET Framework 4 5 na yazyke C


Глава.13 .Интерфейсы
// Этот класс наследует от Base и повторно реализует IDisposable
internal class Derived : Base, IDisposable {
// Этот метод не может переопределить Dispose из Base.
// Ключевое слово 'new' указывает на то, что этот метод
// повторно реализует метод Dispose интерфейса IDisposable
new public void Dispose() {
Console.WriteLine("Derived's Dispose");
// ПРИМЕЧАНИЕ: следующая строка кода показывает,
// как вызвать реализацию базового класса (если нужно)
// base.Dispose();
}
}
Подробнее о вызовах 
интерфейсных методов
Тип 
System.String
из библиотеки FCL наследует сигнатуры и реализации ме-
тодов 
System.Object
. Кроме того, тип 
String
реализует несколько интерфейсов: 
IComparable

ICloneable

IConvertible

IEnumerable

IComparable

IEnumerable
и 
IEquatable
. Это значит, что типу 
String
не требу-
ется реализовывать (или переопределять) методы, имеющиеся в его базовом типе 
Object
. Однако тип 
String
должен реализовывать методы, объявленные во всех 
интерфейсах.
CLR допускает определение полей, параметров или локальных переменных, 
имеющих интерфейсный тип. Используя переменную интерфейсного типа, можно 
вызывать методы, определенные этим интерфейсом. К тому же CLR позволяет вы-
зывать методы, определенные в типе 
Object
, поскольку все классы наследуют его 
методы, как продемонстрировано в следующем коде:
// Переменная s ссылается на объект String
String s = "Jeffrey";
// Используя переменную s, можно вызывать любой метод,
// определенный в String, Object, IComparable, ICloneable,
// IConvertible, IEnumerable и т. д.
// Переменная cloneable ссылается на тот же объект String
ICloneable cloneable = s;
// Используя переменную cloneable, я могу вызвать любой метод,
// объявленный только в интерфейсе ICloneable (или любой метод,
// определенный в типе Object)
// Переменная comparable ссылается на тот же объект String
IComparable comparable = s;
// Используя переменную comparable, я могу вызвать любой метод,
// объявленный только в интерфейсе IComparable (или любой метод,
// определенный в типе Object)


339
Явные.и.неявные.реализации.интерфейсных.методов.(что.происходит.за.кулисами)
// Переменная enumerable ссылается на тот же объект String
// Во время выполнения можно приводить интерфейсную переменную
// к интерфейсу другого типа, если тип объекта реализует оба интерфейса
IEnumerable enumerable = (IEnumerable) comparable;
// Используя переменную enumerable, я могу вызывать любой метод,
// объявленный только в интерфейсе IEnumerable (или любой метод,
// определенный только в типе Object)
Все переменные в этом коде ссылаются на один объект 
String
в управляемой 
куче, а значит, любой метод, который я вызываю с использованием любой из этих 
переменных, задействует один объект 
String
, хранящий строку 
"Jeffrey"
. Но тип 
переменной определяет действие, которое я могу выполнить с объектом. Перемен-
ная 
s
имеет тип 
String
, значит, она позволяет вызвать любой член, определенный в 
типе 
String
(например, свойство 
Length
). Переменную 
s
можно также использовать 
для вызова любых методов, унаследованных от типа 
Object
(например, 
GetType
).
Переменная 
cloneable
имеет тип интерфейса 
ICloneable
, а значит, позволяет 
вызывать метод 
Clone
, определенный в этом интерфейсе. Кроме того, можно вы-
звать любой метод, определенный в типе 
Object
(например, 
GetType
), поскольку 
CLR «знает», что все типы являются производными от 
Object
. Однако переменная 
cloneable
не позволяет вызывать открытые методы, определенные в любом другом 
интерфейсе, реализованном типом 
String
. Аналогичным образом через перемен-
ную 
comparable
можно вызвать 
CompareTo
или любой метод, определенный в типе 
Object
, но не другие методы.

Download 6,27 Mb.

Do'stlaringiz bilan baham:
1   ...   241   242   243   244   245   246   247   248   ...   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