5

次のステートメントが 1 行 (つまり、3 項形式) で記述できるかどうかはわかりません。

if (A == B)
    FunctionA();
else
    FunctionB();

FunctionA と FunctionB はどちらもvoid型です。

4

3 に答える 3

22

いいえ。条件演算子は、非 void式に対してのみ有効です。ポイントは、2 つの式のうちの 1 つを評価し、それが結果になることです。

基本的に:ifステートメントを書きます。これは、あるアクションまたは別のアクションを実行する慣用的な方法です。

次のような拡張メソッドを作成できます。

// For demonstration purposes only. Please don't use in real life.
public static void Conditional(this bool result,
                               Action trueAction,
                               Action falseAction)
{
    Action action = result ? trueAction : falseAction;
    action();
}

それで:

(A == B).Conditional(FunctionA, FunctionB);

...しかし、そうしないことを強くお勧めします。

于 2012-10-18T16:34:53.157 に答える
13

次のステートメントが 1 行で記述できる場合

もちろん:

if (A == B) FunctionA(); else FunctionB();
于 2012-10-18T16:40:24.620 に答える