如何在 C# 的 lambda 函数中使用 if 语句

How to use an if statement in a lambda function in C#

我是C#新手,不太懂lambda,想把这段代码转成lambda表达式

private static bool my_method(int i)
{
    if(i == 0)
    {
        return true;
    }
    else
    {
        return false;
    }
}

我想将此代码转换为 lambda 表达式,谢谢

Func<int, bool> func = (i) => {
    if (i == 0) return true;
    else return false;
};

对此已有答案,但我想包含更多详细信息。

如果你有

这样的函数
bool MyMethod(int i)
{
    ...//Method body
}

并且您想将其更改为 lambda 表达式,您可以使用 Func<ReturnType, Parmeter1, Parameter2, ...> 委托,其中 MyMethod() 之前定义为:

using System;

Func<int, bool> myLabmdaExp = (i) => MyMethod(i); //Here it is implied that i is an int

或者您可以在大括号 {} 中定义表达式,例如:

using System;

Func<int, bool> myLabmdaExp = (i) => 
{
    ....//Function body
}

在你的情况下,

Func<int, bool> func = (val) =>
{
    if(i==0)
    {
        return true;
    }
    else
    {
        return false;
    }

}

您可以使用一些布尔逻辑将您的 lamda 表达式简化为

Func<int, bool> func = (val) => val==0;

您的代码,通过函数名称合法化,如下所示:

private static bool SomeFunction(int i)
{
    if (i == 0)
    {
        return true;
    }
    else
    {
        return false;
    }
}

可以改写为:

private static bool SomeFunction(int i)
{
    return i == 0;
}

这又可以重写为:

private static bool SomeFunction(int i) => i == 0;

并且可以将其重写为 Func<int, bool> lambda,如下所示:

Func<int, bool> someFunction = i => i == 0;