Учебно-методический комплекс общее количество часов 58 ч. Лекции 28 ч


Download 2.46 Mb.
bet81/91
Sana19.10.2023
Hajmi2.46 Mb.
#1709453
TuriУчебно-методический комплекс
1   ...   77   78   79   80   81   82   83   84   ...   91
Bog'liq
Язык программирования C#

19. ОБОБЩЕНИЕ


19.1. Понятие обобщения

Обобщения – средство языка C#, предназначенное для кодирования обобщённых алгоритмов, без привязки к типам данных. Механизм обобщений позволяет создавать обобщенные методы, классы, структуры, интерфейсы и делегаты в которых типы переменных определяются клиентским кодом во время компиляции.


Суть механизм обобщений заключается в следующем. Разработчик определяет алгоритм, например, сортировку, поиск, замену, преобразование и т.д. но не указывает конкретный тип данных, с которым работает этот алгоритм. Именно поэтому алгоритм можно обобщенно применять к объектам разных типов. Используя готовый алгоритм, другой разработчик просто указывает конкретный тип, например, для сортировки Integer, String или даже Record и Class. Код, использующий шаблоны, просто передает в качестве одного из параметров нужный ему тип данных.


19.2. Создание и использование обобщенных методов

Для определения обобщенного метода необходимо после его имени перед круглыми скобками со списком формальных параметров поставить угловые скобки, содержащие переменные типа.


Для иллюстрации работы с обобщенными методами приведем классический пример метода Swap(), обменивающего значения преданных ему переменных. Обобщенный метод способен обменивать значения переменных любого типа.

void Swap(ref T v1, ref T v2)


{
T temp;
temp = v1;
v1 = v2;
v2 = temp;
}
Лист. 10.1

Напишем теперь метод вызывающий наш обобщенный Swap().


public static void Main()


{
// Обмен между двумя целыми.
int a = 10, b = 90;
Console.WriteLine("До обмена: {0}, {1}", a, b);
Swap(ref a, ref b);
Console.WriteLine("После обмена: {0}, {1}", a, b);
Console.WriteLine();

// Обмен между двумя строками.


string s1 = "Hello", s2 = "There";
Console.WriteLine("До обмена: {0} {1}!", s1, s2);
Swap(ref s1, ref s2);
Console.WriteLine("После обмена: {0} {1}!", s1, s2);
Console.ReadLine();
}
Лист. 10.2

Эта программа вызывает метод Swap() сначала для двух целых чисел, а затем для двух строк. Значения переменных выводятся до и после вызова.


Вывод программы:
До обмена: 10, 90
После обмена: 90, 10

До обмена: Hello There!


После обмена: There Hello!
Вывод. 10.1

Обычно при вызове реальный тип должен быть указан в угловых скобках после имени вызываемого метода.


Swap(ref a, ref b);


Лист. 10.3

Если компилятор может определить тип, исходя из контекста аргументов, как в данном случае, то угловые скобки можно опустить.


Swap(ref a, ref b);


Лист. 10.4



Download 2.46 Mb.

Do'stlaringiz bilan baham:
1   ...   77   78   79   80   81   82   83   84   ...   91




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling