}
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 +
}
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> {
Как упоминалось выше, для объявления обобщенного интерфейса используется такой же
