2010-04-16 76 views
1

仍圍繞着我的頭圍繞代表和我很好奇:是否有可能超載匿名函數?重載匿名函數

這樣的:

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

And:

show("ABC", 123); 

回答

3

不,你不能重載這樣的委託。

這是一種

delegate void Output(string x, int y); 

其更改爲這樣:

delegate void Output(string x, string y); 

將重新定義它。

這將有點像定義兩個具有相同名稱的不同類(在同一個命名空間中)。

2

您可能可以使用泛型委託。

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