Учебно-методический комплекс общее количество часов 58 ч. Лекции 28 ч


Создание и использование обобщенных классов ( и структур)


Download 2.46 Mb.
bet82/91
Sana19.10.2023
Hajmi2.46 Mb.
#1709453
TuriУчебно-методический комплекс
1   ...   78   79   80   81   82   83   84   85   ...   91
Bog'liq
Язык программирования C#

19.3. Создание и использование обобщенных классов ( и структур)

Здесь мы опишем работу только с обобщенными классами, т.к. методы работа с обобщенными структурами практически идентичны.


Обобщенные классы инкапсулируют в себе данные обобщенного типа и методы для работы с этими данными. В основном обобщенные классы применяются для работы с разнообразными структурами данных такими, как стеки, очереди, деревья и т.д., т.е. в тех случаях, когда важны не сами данные, а сам факт наличия некоторых данных.
Определение обобщенного класса сходно с объявлением обычного класса, только после имени класса в угловых скобках перечисляются переменные для подстановки типа.
Приведем небольшой пример обобщенного класса Various, он содержит три поля содержащих в общем случае значения трех разных типов, а также свойства и методы для работы с этими полями.

class Various


{
T1 var1;
T2 var2;
T3 var3;

public Various(T1 var1, T2 var2, T3 var3)


{
this.var1 = var1;
this.var2 = var2;
this.var3 = var3;
}

public void Oputput()


{
Console.WriteLine("V1 имеет тип {0} и содержит {1}", var1.GetType(), var1);
Console.WriteLine("V2 имеет тип {0} и содержит {1}", var2.GetType(), var2);
Console.WriteLine("V3 имеет тип {0} и содержит {1}", var3.GetType(), var3);
}

public T1 V1


{
get
{
return var1;
}
set
{
var1 = value;
}
}

public T2 V2


{
get
{
return var2;
}
set
{
var2 = value;
}
}

public T3 V3


{
get
{
return var3;
}
set
{
var3 = value;
}
}
}
Лист. 10.5

Приведенный класс содержит три обобщенных поля var1, var2 и var3, имеющих соответственно типы T1, T2 и T3. Доступ к полям осуществляется посредством соответствующих свойств, а их начальная инициализация посредством обобщенного конструктора. Особый интерес в этом классе представляет метод Output(), выводящий помимо значений еще и тип переменных.


Создадим теперь метод Main(), использующий наш только что определенный класс.

static void Main(string[] args)


{
Console.WriteLine("various1");
Various various1 = new
Various("Один", 1, 1.0);

various1.Oputput();


Console.WriteLine("various2");


Various various2 = new
Various("love", "is", "...");
various2.Oputput();
various2.V3 = "death";
various2.Oputput();
}
Лист. 10.6

Как видите в этом листинге все просто. Создаются два объекта типа Various, и далее происходит обращения к разным свойствам и методу этих объектов.


Вывод программы:

various1
V1 имеет тип System.String и содержит Один


V2 имеет тип System.Int32 и содержит 1
V3 имеет тип System.Double и содержит 1
various2
V1 имеет тип System.String и содержит love
V2 имеет тип System.String и содержит is
V3 имеет тип System.String и содержит ...
V1 имеет тип System.String и содержит love
V2 имеет тип System.String и содержит is
V3 имеет тип System.String и содержит death
Вывод. 10.2

Объявление и создание конкретного объекта обобщенного класса также почти совпадает с объявлением и созданием объекта обычного класса за исключением необходимости определить конкретный тип в угловых скобках.


Various various2;


various2 = new Various("love", "is", "...");
Лист. 10.7

Вызов обобщенных методов полностью совпадает с вызовом необобщенных, при этом еще на этапе компиляции осуществляется строгий контроль типов.


various2.Oputput();


various2.V3 = "death";
Лист. 10.8



Download 2.46 Mb.

Do'stlaringiz bilan baham:
1   ...   78   79   80   81   82   83   84   85   ...   91




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling