На этом шаге мы рассмотрим использование нестатических обобщенных методов.
Обобщенный метод может быть и нестатическим: такой метод описывается в обычном (не обобщенном) классе. В примере ниже приведен пример подобной ситуации.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace pr257_1 { // Класс с обобщенным методом: class MyClass { // Закрытое текстовое поле: public string text; // Конструктор: public MyClass(string t) { text = t; } // Обобщенный метод: public void show<X>(X arg) { Console.WriteLine(text + ": " + arg); } } // Главный класс: class Program { static void Main() { // Создание объектов: MyClass A = new MyClass("Alpha"); MyClass B = new MyClass("Bravo"); // Вызов обобщенного метода: A.show(100); B.show(200); A.show('A'); B.show<char>('B'); B.show<int>('B'); // Задержка: Console.ReadLine(); } } }
Результат выполнения программы такой:
Рис.1. Результат работы приложения
В программе описывается класс MyClass с текстовым полем. В классе есть обобщенный метод show(). Метод получает аргумент обобщенного типа и отображает в консольном окне значение этого аргумента. Вместе со значением аргумента отображается значение текстового поля объекта. В главном методе создается два объекта класса MyClass, и из этих объектов вызывается метод show(). Результаты вызовов вполне предсказуемы.
На следующем шаге мы рассмотрим обобщенные классы.