Объектно-ориентированное программирование на С#. Андрианова А.А - 127 стр.

UptoLike

127
список_обобщенных_типов := T1 [,T2, . . ., TN], Ti
произвольный идентификатор обобщенного типа;
тип_функции тип возвращаемого значения, в качестве которого
может быть указан как конкретный тип данных, так и один из списка
обобщенных типов;
список_параметров список формальных параметров обобщенной
функции, которые могут быть описаны как с указанием конкретного типа
данных, так и одного типа из списка обобщенных типов.
Например, определим класс, который содержит методы сортировки
массивов различными способами. Для того чтобы можно было использовать
эти методы для сортировки массивов с различными типами элементов,
методы сортировки можно сделать обобщенными. В примере
продемонстрирована реализация алгоритма быстрой сортировки.
// класс, предназначенный для сортировки массивов
class Sorter
{
// оббобщенный метод быстрой сортировки массива
public static void Sort<T>(IMyComparer<T> comparer,
T[] items, int left, int right)
{
int i = left;
int j = right;
T center = items[(left + right) / 2];
// цикл упорядочивания элементов
// относительно элемента center
while (i <= j)
{
while (comparer.Greater(center, items[i]))
i++;
while (comparer.Greater(items[j], center))
j--;
if (i <= j)
{
T x = items[i];
items[i] = items[j];
items[j] = x;
i++;
j--;
}
}
// вызов метода сортировки элементов,
// расположенных слева от center
     список_обобщенных_типов   :=   T1   [,T2,   .   .   .,   TN],   Ti    –
произвольный идентификатор обобщенного типа;
     тип_функции – тип возвращаемого значения, в качестве которого
может быть указан как конкретный тип данных, так и один из списка
обобщенных типов;
     список_параметров – список формальных параметров обобщенной
функции, которые могут быть описаны как с указанием конкретного типа
данных, так и одного типа из списка обобщенных типов.
     Например, определим класс, который содержит методы сортировки
массивов различными способами. Для того чтобы можно было использовать
эти методы для сортировки массивов с различными типами элементов,
методы сортировки можно сделать обобщенными. В примере
продемонстрирована реализация алгоритма быстрой сортировки.

   // класс, предназначенный для сортировки массивов
   class Sorter
   {
      // оббобщенный метод быстрой сортировки массива
      public static void Sort(IMyComparer comparer,
                               T[] items, int left, int right)
      {
         int i = left;
         int j = right;
         T center = items[(left + right) / 2];
         // цикл упорядочивания элементов
         // относительно элемента center
         while (i <= j)
         {
            while (comparer.Greater(center, items[i]))
                i++;
            while (comparer.Greater(items[j], center))
                j--;

            if (i <= j)
            {
               T x = items[i];
               items[i] = items[j];
               items[j] = x;
               i++;
               j--;
            }
         }
        // вызов метода сортировки элементов,
        // расположенных слева от center

                                                                          127