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