}

public void Reset()    {

val = start;

}

public void SetStart(T v) { start = v; val = start;

}

}

class ThreeD {

public int x/ч у, z;

public ThreeD(int a, int b, int c) { x = a;

У = b;

z = c;

}

}

class GenlntfDemo {

// Определить метод увеличения на два каждого // последующего значения типа int. static int IntPlusTwo(int v) { return v + 2;

}

// Определить метод увеличения на два каждого // последующего значения типа double, static double DoublePlusTwo(double v) { return v + 2.0;

}

// Определить метод увеличения на два каждого // последующего значения координат объекта типа ThreeD. static ThreeD ThreeDPlusTwo(ThreeD v) { if(v==null) return new ThreeD(0, 0, 0) ; else return new ThreeD(v.x + 2, v.y + 2, v.z + 2);

}

static void Main() {

// Продемонстрировать генерирование // последовательного ряда значений типа int. ByTwos<int> intBT = new ByTwos<int>(IntPlusTwo);

for(int i=0; i < 5; i++)

Console.Write(intBT.GetNext() + ' ') ;

Console.WriteLine();

// Продемонстрировать генерирование // последовательного ряда значений типа double. ByTwos<double> dblBT =

new ByTwos<double>(DoublePlusTwo); dblBT.SetStart(11.4);

for(int i=0; i < 5; i++)

Console.Write(dblBT.GetNext() + ' ');

Console.WriteLine();

// Продемонстрировать генерирование последовательного ряда // значений координат объекта типа ThreeD.

ByTwos<ThreeD> ThrDBT = new ByTwos<ThreeD>(ThreeDPlusTwo);

ThreeD coord;

coord.z + ' ');

}

Console.WriteLine();

}

}

Этот код выдает следующий результат.

2 4 6 8 10

13.4 15.4 17.4 19.4 21.4 0, 0, 0 2,2,2 4, 4, 4 6, 6, 6 8, 8,8

В данном примере кода имеется ряд любопытных моментов. Прежде всего обратите внимание на объявление интерфейса ISeries в следующей строке кода.

public interface ISeries<T> {

Как упоминалось выше, для объявления обобщенного интерфейса используется такой же

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату