На этом шаге мы рассмотрим перегрузку обобщенных методов.
Примечателен и тот факт, что обобщенные методы можно перегружать: в программе может быть несколько версий обобщенного метода. Как это делается на практике, показано в примере ниже.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace pr256_1 { // Главный класс: class Program { // Первая версия метода: static void show<T>(T a) { Console.WriteLine("Bepcия №1"); Console.WriteLine("Аргумент: {0}", a); } // Вторая версия метода: static void show(int a) { Console.WriteLine("Bepcия №2"); Console.WriteLine("Числo: {0}", a); } // Третья версия метода: static void show<T, U>(T a, U b) { Console.WriteLine("Bepcия №3"); Console.WriteLine("Первый: {0}", a); Console.WriteLine("Второй: {0}", b); } // Четвертая версия метода: static void show<T>(T a, int b) { Console.WriteLine("Bepcия №4"); Console.WriteLine("Первый: {0}", a); Console.WriteLine("Число: {0}", b); } // Главный метод: static void Main() { // Вызов обобщенного метода: show('A'); show(123); show<int>('A'); show<int>(123); show('B', "Bravo"); show('C', 321); show<char, int>('C', 321); // Задержка: Console.ReadLine(); } } }
Ниже представлен результат выполнения программы:
Рис.1. Результат работы приложения
Все версии метода show() при вызове отображают в консольном окне значения аргумента или аргументов, но в любом случае можно определить версию метода, которая была вызвана.
В главном методе метод show() вызывается с разными аргументами. При выполнении команды
show('A');
show(123);
show<int>(123);
show('B', "Bravo");
А вот при выполнении команды
show('C', 321);
show<char, int>('C', 321);
На следующем шаге мы закончим изучение этого вопроса.