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



Download 8,15 Mb.
Pdf ko'rish
bet180/266
Sana20.04.2022
Hajmi8,15 Mb.
#567200
1   ...   176   177   178   179   180   181   182   183   ...   266
Bog'liq
C# for beginners


Глава 12. Коллекции. Обобщения 
287 
к другим, использованием типа 
object
в качестве промежуточного типа 
и т. д.) в коллекции могут оказаться данные не того типа, с которым 
должна работать коллекция. Кроме того, приведение данных связано с 
выполнением операций по упаковке/распаковке данных, что занимает 
значительное дополнительное время. (Упаковка данных — это процесс 
преобразования значения данного в ссылку на него и возможное пере-
мещение данного из стековой памяти программы в кучу, где хранятся 
ссылочные данные; а распаковка — это обратный процесс: преобразо-
вание ссылки на данное в значение данного, и такое данное уже не мо-
жет храниться в куче. Его надо перемещать в стековую память про-
граммы.) Возникает проблема типизации коллекций, задание типа дан-
ных, с которыми (и только с ними) может работать коллекция. Но тогда 
каждый раз для нового типа данных надо будет создавать заново новый 
класс. Человечество всегда на пути своего развития стремилось к обоб-
щениям. Вот и в данном случае первое, что приходит в голову: а нельзя 
ли как-то параметризировать процесс создания класса? Сделать так, 
чтобы параметром класса был тип данного? И этот тип конкретизиро-
вался на этапе создания экземпляра класса, позволяя создавать объект 
строго типизированным? Эту проблему как раз и решают средства C#, 
которые называются 
обобщениями
. Для этого было создано специаль-
ное пространство 
System.Collection.Generic
, в котором и размещаются 
такие классы. Но обобщенными классами дело не ограничивается: 
обобщенными можно создавать интерфейсы (хотя это тоже классы, но 
без возможности их наследования) и методы, которые можно опреде-
лять и не в обобщенных классах. Обобщенный элемент отличить от 
других элементов в документации .NET Framework легко по наличию 
угловых скобок с буквой или другой лексемой (лексема — последо- 
вательность допустимых символов, которую распознает компилятор)
в них. Например, мы встречались уже с классом 
List
. Конструкцию 
<Т>
можно читать как "типа Т". 
Т
— это место подстановки настоящего 
типа данных при объявлении экземпляра "типизированного" класса. 
Например, коллекция целых чисел, полученная с применением обоб-
щенного класса 
List
, может быть объявлена так: 
List MyInt = new List(); 
Имя параметра типа может быть не обязательно "Т". Это имя задает тот
кто создает обобщенный элемент и создает для него документацию. 
Обычно в качестве имени могут быть для представления типов — 
Т
, для 
представления ключей — 
K

Key
, для представления значений — 
V
или 
TValue

Итак, значение параметра должно быть явно указано при создании объ-
екта из обобщенного элемента. Ранее мы встречались уже с применени-


288 
Download 8,15 Mb.

Do'stlaringiz bilan baham:
1   ...   176   177   178   179   180   181   182   183   ...   266




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2025
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