重写一个?运算符在c#中使用if-else

Bry*_*yan 0 c# if-statement

我能写这个吗

 return (a, b) => (b == 0) ? 0: a / b;
Run Code Online (Sandbox Code Playgroud)

随着if-else以权(a, b) =>

Sco*_*ain 5

如果你要返回,Func<double, double, double>它可以重写为

return (a, b) =>
    {
     if(b == 0)
        return 0;
     else
        return a / b; 
    };
Run Code Online (Sandbox Code Playgroud)

如果你要返回Expression<Func<double, double, double>>它并不容易,你需要手动创建一个自定义表达式来表示语句,因为无法在C#中表示它.

没有测试过,但我认为Expression版本会是

public Expression<Func<double, double, double>> IThinkThisWorks()
{
    var paramA = Expression.Parameter(typeof(double), "a");
    var paramB = Expression.Parameter(typeof(double), "b");
    var const0 = Expression.Constant(0.0);
    var test = Expression.Equal(paramA, paramB);
    var division = Expression.Divide(paramA, paramB);
    var ifCheck = Expression.IfThenElse(test, const0, division);
    return Expression.Lambda<Func<double, double, double>>(ifCheck, paramA, paramB);
}
Run Code Online (Sandbox Code Playgroud)