Универсальные классы применяются для создания членов класса, тип которых заранее не известен.
Например, в классе объявляется массив, но его тип будет известен только в главном методе Main. В угловых скобках пишут условную букву <Т>, что означает template, т.е. шаблон. При создании объекта, вместо нее пишут тип члена класса, который заранее неизвестен (например, массива).
Например, в классе объявляется массив, но его тип будет известен только в главном методе Main. В угловых скобках пишут условную букву <Т>, что означает template, т.е. шаблон. При создании объекта, вместо нее пишут тип члена класса, который заранее неизвестен (например, массива).
Main.cs
usingSystem;classOne<T> {-
//размер массива -
publicintsize; -
//ВНИМАНИЕ!!! объявляем только переменную массива -
T[] arra; -
publicOne(intarg) { -
size = arg; -
//ВНИМАНИЕ!!! массив инициализируется в конструкторе -
arra =newT[size]; -
} -
//с помощью индексатора происходит заполнение массива -
publicTthis[inti] { -
set{ -
if(size<0 | size>arra.Length) { -
thrownewException("Выход за пределы массива"); -
} -
else{ -
arra[i] = value; -
} -
} -
get{ -
if(size<0 | size>arra.Length) { -
thrownewException("Выход за пределы массива"); -
} -
else{ -
returnarra[i]; -
} -
} -
} }classProgram {-
publicstaticintMain() { -
One<int> O =newOne<int>(3); -
O[0] = 10; -
O[1] = 20; -
O[2] = 30; -
intres = 0; -
for(inti=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(); -
return0; -
} }
usingSystem;classOne<T> {-
//размер массива -
publicintsize; -
//ВНИМАНИЕ!!! объявляем только переменную массива -
T[] arra; -
publicOne(intarg) { -
size = arg; -
//ВНИМАНИЕ!!! массив инициализируется в конструкторе -
arra =newT[size]; -
} -
//с помощью индексатора происходит заполнение массива -
publicTthis[inti] { -
set{ -
if(size<0 | size>arra.Length) { -
thrownewException("Выход за пределы массива"); -
} -
else{ -
arra[i] = value; -
} -
} -
get{ -
if(size<0 | size>arra.Length) { -
thrownewException("Выход за пределы массива"); -
} -
else{ -
returnarra[i]; -
} -
} -
} }classProgram {-
publicstaticintMain() { -
One<int> O =newOne<int>(3); -
O[0] = 10; -
O[1] = 20; -
O[2] = 30; -
intres = 0; -
for(inti=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(); -
return0; -
} }
10 + 20 + 30 = 60