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



Download 6,27 Mb.
Pdf ko'rish
bet213/658
Sana12.06.2023
Hajmi6,27 Mb.
#950840
1   ...   209   210   211   212   213   214   215   216   ...   658
Bog'liq
CLR via C Programmirovanie na platforme Microsoft NET Framework 4 5 na yazyke C

Глава 12.
 Обобщения
Разработчикам хорошо известны достоинства объектно-ориентированного про-
граммирования. Одно из ключевых преимуществ — возможность многократного 
использования кода за счет создания производных классов, наследующих все воз-
можности базового класса. В производном классе можно просто переопределить 
виртуальные методы или добавить новые методы, чтобы изменить унаследованные 
от базового класса характеристики для решения новых задач. 
Обобщения 
(generics) — 
еще один механизм, поддерживаемый средой CLR и языками программирования 
для другой разновидности многократного использования кода — а именно много-
кратного использования алгоритмов.
По сути, разработчик описывает алгоритм, например, сортировки, поиска, заме-
ны, сравнения или преобразования, но не указывает типы данных, с которыми тот 
работает, что позволяет применять алгоритм к объектам разных типов. Применяя 
готовый алгоритм, другой разработчик должен указать конкретные типы данных
например для алгоритма сортировки — 
Int32

String
и т. д., а для алгоритма срав-
нения — 
DateTime

Version
и т. д.
Большинство алгоритмов инкапсулировано в типе. CLR поддерживает создание 
как обобщенных ссылочных, так и обобщенных значимых типов, однако обобщен-
ные перечислимые типы не поддерживаются. Кроме того, CLR позволяет создавать 
обобщенные интерфейсы и делегатов. Иногда полезный алгоритм инкапсулирован 
в одном методе, поэтому CLR поддерживает создание обобщенных методов, опреде-
ленных в ссылочном типе, в значимом типе или в интерфейсе.
В частности, в библиотеке FCL определен обобщенный алгоритм управления 
списками, работающий с набором объектов. Тип объектов в обобщенном алгорит-
ме не указан. Разработчик, который хочет использовать такой алгоритм, должен 
указать конкретный тип данных.
FCL-класс, инкапсулирующий обобщенный алгоритм управления списками, на-
зывается 
List
и определен в пространстве имен 
System.Collections.Generic

Исходный текст определения этого класса выглядит следующим образом (приво-
дится с сокращениями):
[Serializable]
public class List : IList, ICollection, IEnumerable,
IList, ICollection, IEnumerable {
public List();
public void Add(T item);
public Int32 BinarySearch(T item);
public void Clear();


303
Обобщения
public Boolean Contains(T item);
public Int32 IndexOf(T item);
public Boolean Remove(T item);
public void Sort();
public void Sort(IComparer comparer);
public void Sort(Comparison comparison);
public T[] ToArray();
public Int32 Count { get; }
public T this[Int32 index] { get; set; }
}
Символами 

сразу после имени класса автор обобщенного класса 
List
указал, 
что класс работает с неопределенным типом данных. При определении обобщенного 
типа или метода переменные, указанные вместо типа (например, 
T
), называются 
параметрами типа
(type parameters). 
T
— это имя переменной, которое применяется 
в исходном тексте во всех местах, где используется соответствующий тип данных. 
Например, в определении класса 
List
переменная 
T
служит параметром (метод 
Add
принимает параметр типа 
T)
и возвращаемым значением (метод 
ToArray
воз-
вращает одномерный массив типа 
T
) метода. Другой пример — метод-индексатор 
(в C# он называется 
this
). У индексатора есть метод доступа 
get
, возвращающий 
значение типа 
T
, и метод доступа 
set
, получающий параметр типа 
T
. Переменную 
T
можно использовать в любом месте, где должен указываться тип данных — а значит, 
и при определении локальных переменных внутри метода или полей внутри типа.

Download 6,27 Mb.

Do'stlaringiz bilan baham:
1   ...   209   210   211   212   213   214   215   216   ...   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