在 Visual Basic 中,有这个IIF Function,如 Crystal Report 等......
在 C# 本身中,这个函数是不存在的,但它和做这样的事情是一样的:
bool a = true;
string b = a ? "is_True" : "is_False";
但是为了使代码更易于阅读,我想将其作为 C# 的函数来执行,如下所示:
public static T IIf<T>(bool expression, T truePart, T falsePart)
{
return expression ? truePart : falsePart;
}
或者不使用真实值进行操作也可以使用委托来完成,以访问必要的值:
public static T IIf<T>(bool expression, Func<T> truePart, Func<T> falsePart)
{
return expression ? truePart() : falsePart();
}
到目前为止,这运作良好......
但是我怎样才能修改这个函数以便我可以接受 2N + 1 个参数呢?
(N - 指定的逻辑表达式的数量)
示例所需的结果:
每个奇数参数指定一个逻辑表达式;
每个偶数参数指定前一个表达式计算结果为真时返回的值;
最后一个参数指定如果先前评估的逻辑表达式产生假时返回的值。
int value = IIf(Name = "Joel", 1, Name = "Peter", 2, Name = "Maria", 3, 4);
有人可以帮我解决这个问题吗?
环境:C#-Visual Studio 2017