翻译匿名功能

时间:2015-04-08 10:10:37

标签: c# lambda

如果你有这种类型Func<bool,bool>参数的函数,我知道这可以是一个函数,它有一个bool类型的参数,也会返回bool

我看到人们像这样传递lambda:(x => x),这是什么意思?如何将其转化为正常功能?

3 个答案:

答案 0 :(得分:5)

可以与这种常规方法进行比较:

public bool SomeMethod(bool x)
{
    return x;
}

实际上它返回了提供给lambda表达式的相同变量。

答案 1 :(得分:1)

如果你看一下lambda表达式MSDN文档,它会说:

  

lambda表达式 x =&gt; x * x 指定名为x的参数   并返回x平方的值。您可以将此表达式指定给   代表类型。

要将其转换为普通功能,您可以将其编写为:

public bool MethodName(bool x)
{
    return x;
}

答案 2 :(得分:1)

Func<bool,bool>
      |    |
    input  |
        output

相当于

public bool Foo(bool bar)
{
    return bar; // do something with bar
}

您还可以有许多输入参数,例如

Func<bool, bool, bool>
     |      |     |
  input1  input2  |
               output

相当于

public bool Foo(bool foo, bool bar)
{
    return foo && bar; // do something with foo and bar
}

如果您的输出只是void,则可以使用Action<T>

Action<bool, bool, bool>
       |      |     |
  input1  input2 input3

相当于

public void Foo(bool foo, bool bar, bool foobar)
{
    this.result = foo && bar && foobar; // do something with foo and bar and foobar
    // ouch! no return because it's a void
}