代码之家  ›  专栏  ›  技术社区  ›  BrunoLM

将lambda传递给具有不同参数的方法

  •  2
  • BrunoLM  · 技术社区  · 14 年前

    是否可以调用传递参数数目可变的lambda的方法?

    例如:

    public void Go(Action x)
    {
    }
    

    我需要称之为传递参数,例如:

    Go(() => {});
    Go((x, y) => {});
    Go((x) => {});
    

    有可能吗?怎么用?

    3 回复  |  直到 11 年前
        1
  •  1
  •   BrunoLM    14 年前

    您可以创建重载,如中所示

    public void Go<T>(Action<T> x)
    {
    }
    

    Action<T> . 请注意,它不会从MSDN返回值:

    价值观。

        2
  •  6
  •   Eric Lippert    14 年前

    没有铸造就不行。但是铸造很容易:

    void Go(System.Delegate d) {}
    ...
    Go((Action)(()=>{}));
    Go((Action<int>)(x=>{}));
    Go((Action<int, int>)((x,y)=>{}));
    

    出于好奇, 围棋的主体要做什么?

        3
  •  0
  •   KeithS    14 年前

    public TResult Go<TResult>(Func<TResult> x) {return x()};
    
    public TResult Go<T,TResult>(Func<T, TResult> x, T param1) {return x(param1)};
    
    ...