На этом шаге мы рассмотрим использование таких структур.
Структуры также могут быть обобщенными. Принцип описания и использования обобщенных структур, в общем-то, такой же, как и в случае с обобщенными классами. Просто нужно помнить, что мы имеем дело со структурами, со всеми вытекающими отсюда последствиями. Пример использования обобщенных структур представлен в примере ниже.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace pr259_1 { // Обобщенная структура: struct MyStruct<X, Y> { // Поля обобщенных типов: public X first; public Y second; // Конструктор: public MyStruct(X a, Y b) { first = a; second = b; } // Метод для отображения значений полей: public void show() { Console.WriteLine("Первое поле: {0}", first); Console.WriteLine("Второе поле: {0}", second); } } // Главный класс: class Program { static void Main() { // Создание экземпляра структуры: MyStruct<string, int> A; // Присваивание значений полям экземпляра структуры: A.first = "MyStruct"; A.second = 100; // Вызов метода из экземпляра структуры: A.show(); // Создание экземпляра структуры: MyStruct<char, int> B = new MyStruct<char, int>('B', 200); // Вызов метода из экземпляра структуры: B.show(); // Задержка: Console.ReadLine(); } } }
Результат выполнения программы следующий:
Рис.1. Результат работы приложения
Программа представляет собой упрощенный вариант примера из предыдущего шага, но на этот раз мы вместо обобщенного класса использовали обобщенную структуру. Структура называется MyStruct, и у нее два обобщенных параметра (обозначены как X и Y). В структуре описаны два поля обобщенного типа, конструктор с двумя аргументами и метод show() для отображения значений полей. В главном методе программы создаются экземпляры структуры, полям экземпляров в случае необходимости присваиваются значения. Для поверки значений полей экземпляров структуры вызывается метод show().
На следующем шаге мы рассмотрим обобщенные интерфейсы.