универсальные классы

Универсальные классы применяются для создания членов класса, тип которых заранее не известен.
Например, в классе объявляется массив, но его тип будет известен только в главном методе Main. В угловых скобках пишут условную букву <Т>, что означает template, т.е. шаблон. При создании объекта, вместо нее пишут тип члена класса, который заранее неизвестен (например, массива).
Скрыть

Показать

Копировать
  Main.cs  
  • using System;
  •  
  • class One<T> {
  •  //размер массива
  •  public int size;
  •  //ВНИМАНИЕ!!! объявляем только переменную массива
  •  T[] arra;
  •  public One(int arg) {
  •   size = arg;
  •   //ВНИМАНИЕ!!! массив инициализируется в конструкторе
  •   arra = new T[size];
  •  }
  •  //с помощью индексатора происходит заполнение массива
  •  public T this[int i] {
  •   set {
  •    if(size<0 | size>arra.Length) {
  •     throw new Exception("Выход за пределы массива");
  •    }
  •    else {
  •     arra[i] = value;
  •    }
  •   }
  •   get {
  •    if(size<0 | size>arra.Length) {
  •     throw new Exception("Выход за пределы массива");
  •    }
  •    else {
  •     return arra[i];
  •    }
  •   }
  •  }
  • }
  •  
  • class Program {
  •  public static int Main() {
  •   One<int> O = new One<int>(3);
  •   O[0] = 10;
  •   O[1] = 20;
  •   O[2] = 30;
  •   int res = 0;
  •   for(int i=0; i<O.size; i++) {
  •    res+=O[i];
  •    if(i != O.size-1) {
  •     Console.Write("{0} + ", O[i]);
  •    }
  •    else {
  •     Console.Write("{0} = ", O[i]);
  •    }
  •   }
  •   Console.Write(res);
  •   Console.WriteLine();
  •   Console.ReadKey();
  •   return 0;
  •  }
  • }
10 + 20 + 30 = 60