操作<动作<字符串,整数>&GT;和C#中的Lambda表达式

时间:2016-04-07 10:57:49

标签: c# lambda delegates

我已经对此进行了搜索,但是到目前为止我还不知道如何提出问题以获得答案我无法在Lambda表达式的嵌套操作中找到任何内容。我可以找到很多关于将lambda表达式作为参数传递的帮助,其中参数是委托,事实上我在我的代码中做了很多。这是嵌套的lambda表达式,它给我带来了问题。

我有一个类型为

的类
Action<Action<string,int>> myAction

我希望为它分配一个Lambda表达式。我可以在没有Lambda表达式的情况下使用我在代码中的其他地方使用的实际方法来实现。我也可以做一些简单的事情,比如

myAction = ((a) => { a("a string", 0); });

但我想将子动作和动作放在一个Lambda中。有点像...

myAction = (((s,i)=>{//sub-action body here})=> { //do something here});

但是这种语法不起作用。有没有办法做到这一点,或者我必须事先定义我的方法,如果我想这样做,没有Lambda表达式吗?

1 个答案:

答案 0 :(得分:1)

        Action<Action<string, int>> myAction = a => (new Action<string, int>((s, i) => Console.WriteLine(i + s)))("hello", 1);
        myAction(null);  //1hello
        Console.ReadLine();

虽然等于

        Action<Action<string, int>> myAction = a => Console.Writeline("1hello");

你只是忽略了一个论点