重载匿名函数

时间:2010-04-16 21:21:46

标签: c# anonymous-function overloading

仍然围绕着代表们,我很好奇:是否有可能超载匿名函数?

这样:

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 个答案:

答案 0 :(得分:3)

不,你不能像这样重载委托。

这是一种类型

delegate void Output(string x, int y);

将其更改为:

delegate void Output(string x, string y);

会重新定义它。

这有点像定义两个具有相同名称的不同类(在同一名称空间中)。

答案 1 :(得分:2)

您可以使用Generic Delegates。

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