-1

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

4

2 に答える 2