Для чего нужны дженерик параметры в объявлении делегата, если все типы входных и выходных параметров строго определены?

628
01 февраля 2017, 23:27

Такой вопрос, для чего в объявлении делегата в данном примере нужны дженерик параметры <Т1, Т2> если их нет в конъюнктуре метода на который ссылается делегат, то есть все входные и выходные параметры определены конкретным типом данных, что определяют Т1 и Т2? (без них ошибка). Делегат TryGet ссылается на метод AskUser. Код с портала Ulearn.

namespace ConsoleApplication14
{
delegate bool TryGet <T1, T2> (string question, Action<string> action, out int age);
class Program 
  {
    public static void Main()
    {
        Run(AskUser, Console.WriteLine);
    }
    static void Run(TryGet <string, int> askUser, Action<string> tellUser)
    {
        int age;
        if (askUser("What is your age?", tellUser, out age))
            tellUser("Age: " + age);
    }
    static bool AskUser(string questionText, Action<string> tellUser, out int age)
    { // метод на который ссылается делегат TryGet
tellUser(questionText);
var answer = Console.ReadLine();
return int.TryParse(answer, out age);
    }
  }
}
READ ALSO
Можно ли понять куда копируются файлы?

Можно ли понять куда копируются файлы?

Например, FileSystemWatcher ловит какое-то изменение в отслеживаемой директории

323
Где найти исходники RichTextBox и FlowDocument?

Где найти исходники RichTextBox и FlowDocument?

Ищу исходники RichTextBox и FlowDocument

349
Как в C# правильно сравнивать строки

Как в C# правильно сравнивать строки

Как в C# правильно сравнивать строки: Equals или ==?

962