【问题标题】:Passing lambda expression as function parameter将 lambda 表达式作为函数参数传递
【发布时间】:2015-05-18 04:27:14
【问题描述】:

bool decide(bool x) 之类的函数可以在方法中作为参数作为函子传递:

foo(Func<bool,bool> lambda)

我们可以使用像 ()=&gt;{int x=8; x=x+2;} 这样的 lambda 表达式,它不接受任何内容并返回任何内容。假设我想将这样的函数作为参数传递给另一个方法bar,那该怎么做呢?

【问题讨论】:

    标签: c# lambda


    【解决方案1】:

    这是Action,而不是Func。如果你不想返回值,那么你必须使用Action

    例如:

    Action<int> example1 = (int x) => Console.WriteLine("Write {0}", x);
    example1.Invoke(1); // or example1(1);
    
    Action example3 = () => Console.WriteLine("Done");
    example3.Invoke(); // or example3();
    

    【讨论】:

      【解决方案2】:

      你会想要一个Action

      不过,它可能会比设置和操作局部变量做更多的工作?

      【讨论】: