我能写这个吗
return (a, b) => (b == 0) ? 0: a / b;
Run Code Online (Sandbox Code Playgroud)
随着if-else以权(a, b) =>
如果你要返回,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)
| 归档时间: |
|
| 查看次数: |
84 次 |
| 最近记录: |