Перегрузка анонимных функций - PullRequest
1 голос
/ 17 апреля 2010

Все еще обнимаю делегатов, и мне любопытно: возможно ли перегрузить анонимные функции?

такой, что:

delegate void Output(string x, int y);

Поддержка:

Output show = (x, y) => Console.WriteLine("{0}: {1}", x.ToString(), y.ToString());

И

delegate void Output(string x, string y);

Разрешение:

show( "ABC", "EFG" );

И

show( "ABC", 123 );

Ответы [ 2 ]

3 голосов
/ 17 апреля 2010

Нет, вы не можете перегрузить такого делегата.

Это тип

delegate void Output(string x, int y);

изменив это на:

delegate void Output(string x, string y);

переопределит его.

Это было бы как определение двух разных классов с одинаковым именем (в одном и том же пространстве имен).

2 голосов
/ 17 апреля 2010

Возможно, вы можете использовать Generic Delegates.

public delegate void Output<T1,T2>(T1 x, T2 y);
...