Visual Basic では、Crystal Report などのように、このIIF Functionがあります。
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 - 指定された論理式の数)
望ましい結果の例:
奇数の各引数は、論理式を指定します。
各偶数引数は、前の式が true と評価された場合に返される値を指定します。
最後の引数は、以前に評価された論理式が false の場合に返される値を指定します。
int value = IIf(Name = "Joel", 1, Name = "Peter", 2, Name = "Maria", 3, 4);
誰か私に手を貸してくれませんか?
環境: C# - Visual Studio 2017