Учебно-методический комплекс общее количество часов 58 ч. Лекции 28 ч
Создание и использование обобщенных классов ( и структур)
Download 2.46 Mb.
|
Язык программирования 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 Various various1.Oputput(); Console.WriteLine("various2"); Various Various various2.Oputput(); various2.V3 = "death"; various2.Oputput(); } Лист. 10.6 Как видите в этом листинге все просто. Создаются два объекта типа Various, и далее происходит обращения к разным свойствам и методу этих объектов. Вывод программы: various1
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 = new Various Лист. 10.7 Вызов обобщенных методов полностью совпадает с вызовом необобщенных, при этом еще на этапе компиляции осуществляется строгий контроль типов. various2.Oputput(); various2.V3 = "death"; Лист. 10.8 Download 2.46 Mb. Do'stlaringiz bilan baham: |
ma'muriyatiga murojaat qiling