【发布时间】:2015-05-18 04:27:14
【问题描述】:
bool decide(bool x) 之类的函数可以在方法中作为参数作为函子传递:
foo(Func<bool,bool> lambda)
我们可以使用像 ()=>{int x=8; x=x+2;} 这样的 lambda 表达式,它不接受任何内容并返回任何内容。假设我想将这样的函数作为参数传递给另一个方法bar,那该怎么做呢?
【问题讨论】:
bool decide(bool x) 之类的函数可以在方法中作为参数作为函子传递:
foo(Func<bool,bool> lambda)
我们可以使用像 ()=>{int x=8; x=x+2;} 这样的 lambda 表达式,它不接受任何内容并返回任何内容。假设我想将这样的函数作为参数传递给另一个方法bar,那该怎么做呢?
【问题讨论】:
这是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();
【讨论】:
你会想要一个Action!
不过,它可能会比设置和操作局部变量做更多的工作?
【讨论】: