// Определить метод увеличения на два каждого // последующего значения координат объекта типа ThreeD. static ThreeD ThreeDPlusTwo(ThreeD v) { if(v==null) return new ThreeD(0, 0, 0) ; else return new ThreeD(v.x + 2, v.y +
}
static void Main {
// Продемонстрировать генерирование // последовательного ряда значений типа int. ByTwos
for(int i=0; i < 5; i++)
Console.Write(intBT.GetNext + " ") ;
Console.WriteLine;
// Продемонстрировать генерирование // последовательного ряда значений типа double. ByTwos
new ByTwos
for(int i=0; i < 5; i++)
Console.Write(dblBT.GetNext + " ");
Console.WriteLine;
// Продемонстрировать генерирование последовательного ряда // значений координат объекта типа ThreeD.
ByTwos
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
Как упоминалось выше, для объявления обобщенного интерфейса используется такой же синтаксис, что и для объявления обобщенного класса.
А теперь обратите внимание на следующее объявление классаByTwos,реализующего интерфейсI series.
class ByTwos
Параметр типаТуказывается не только при объявлении классаByTwos,но и при объявлении интерфейсаISeries.И это очень важно. Ведь класс, реализующий обобщенный вариант интерфейса, сам должен быть обобщенным. Так, приведенное ниже объявление недопустимо, поскольку параметр типаТне определен.
class ByTwos : ISeries
Аргумент типа, требующийся для интерфейсаISeries,должен быть передан классуByTwos.В противном случае интерфейс никак не сможет получить аргумент типа.