代码之家  ›  专栏  ›  技术社区  ›  Keith Adler

重载匿名函数

  •  1
  • Keith Adler  · 技术社区  · 14 年前

    我仍然把脑袋绕在委托上,我很好奇:是否有可能重载匿名函数?

    这样:

    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 回复  |  直到 14 年前
        1
  •  3
  •   kemiller2002    14 年前

    不,你不能让这样的委托超载。

    这是一种类型

    delegate void Output(string x, int y);
    

    更改为:

    delegate void Output(string x, string y);
    

    会重新定义它。

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

        2
  •  2
  •   AlwaysAProgrammer    14 年前

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

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