1

仍然围绕着 Delegates,我很好奇:是否可以重载匿名函数?

这样:

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 );
4

2 回答 2

3

不,您不能像这样超载委托。

这是一个类型

delegate void Output(string x, int y);

将其更改为:

delegate void Output(string x, string y);

会重新定义它。

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

于 2010-04-16T21:24:15.813 回答
2

您可能可以使用通用委托。

public delegate void Output<T1,T2>(T1 x, T2 y);
于 2010-04-16T21:41:26.807 回答