C# для начинающих Пахомов Б. И



Download 8,15 Mb.
Pdf ko'rish
bet183/266
Sana20.04.2022
Hajmi8,15 Mb.
#567200
1   ...   179   180   181   182   183   184   185   186   ...   266
Bog'liq
C# for beginners


Часть II. Объектно-ориентированное программирование 
Ограничения для параметров типа 
Платформа .NET позволяет с помощью ключевого слова 
where
вводить 
ряд ограничений на параметр типа.
Это следующие требования к параметру: 
where T : struct
означает, что параметр 

должен иметь в своей 
цепочке наследования 
System.ValueType
, т. е. 
Т
должен быть струк-
турой (структура — это тип-значение); 
where T : class
означает, что параметр 

не должен иметь в своей 
цепочке наследования 
System.ValueType
, т. е. быть ссылочным ти-
пом; 
where T : new
означает, что параметр 

должен иметь конструктор 
по умолчанию, т. е. обобщенный тип должен создавать экземпляры 
параметра типа. Если в типе много ограничений, то это ограничение 
должно быть последним; 
where T : 
Имя_базового_класса
означает, что параметр 
Т
должен 
быть наследником указанного базового класса; 
where T : 
Имя_интерфейса
означает, что параметр 
Т
должен реализо-
вать указанный интерфейс. Можно задавать несколько интерфейсов, 
разделяя их запятыми. 
Обобщенный класс может иметь более одного параметра. В таком
случае можно писать ограничения на каждый параметр отдельно. На-
пример, 
public class A where K : NameOfBaseClass, new() where T : 
IComparable 
К параметрам типа нельзя применять операции арифметики и сравне-
ния. Например, нельзя писать: 
public T Add(T arg1, T arg2) 
{return arg1 + arg2} 
Выход здесь состоит в том, что придется создавать свой интерфейс, ко-
торый бы переопределял "неприятные" операции, а потом уже вводить 
ограничения на тип вида: 
where T : 
operator
+, 
operator
— и т. д. 


ГЛ А В А
13 
Делегаты и события 
Делегат
— это конструкция C#, с помощью которой можно вызывать 
некую функцию. И не одну. Но вызываются те функции, сигнатура (т. е. 
заголовок) которых совпадает с сигнатурой делегата. Из этого опреде-
ления следует, что синтаксис определения делегата должен быть похож 
на синтаксис задания функции. А что входит в синтаксис задания функ-
ции? Тип возвращаемого ею значения, имя и список параметров с их 
типами в круглых скобках. Отвлечемся от имени и рассмотрим осталь-
ные характеристики заголовка. Делегат как раз способен вызывать лю-
бую функцию, у которой тип возвращаемого значения и список пара-
метров с их типами совпадают с объявленными в делегате. Синтаксис 
объявления делегата: 
public delegate 
ТипВозвращаемогоЗначения
ИмяДелегата
(
список_параметров_с_их_типами
); 
Например, 
public delegate int MyDelegate(string a, double b); 
Этот делегат может вызывать любой метод (или функцию), у которого 
тип возвращаемого значения — 
int
, первый параметр описан как 
string
a

а второй — 
double
b
. Заметили, что здесь ни слова не говорится об име-
ни метода, с которым связан конкретный алгоритм реализации этого 
метода? То есть с помощью делегата можно вызывать любой метод, 
лишь бы его сигнатура (усеченная, без имени) совпадала с сигнатурой 
делегата. 
Отметим, что делегат — это класс, имеет свой конструктор и потому
с его помощью можно создавать объекты класса-делегата. Расшифро-
вывая объявление конструкции-делегата, компилятор порождает запе-


294 
Download 8,15 Mb.

Do'stlaringiz bilan baham:
1   ...   179   180   181   182   183   184   185   186   ...   266




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