?: 演算子 (C# リファレンス)

条件演算子 (?:) では、ブール式の値に応じて 2 つの値のいずれかが返されます。 条件演算子の構文は次のとおりです。

condition ? first_expression : second_expression;

解説

condition は、true または false に評価される必要があります。 condition が true の場合、first_expression が評価され、これが結果となります。 condition が false の場合、second_expression が評価され、これが結果となります。 2 つの式のどちらか一方だけが評価されます。

first_expression の型と second_expression の型とは、同じ型であるか、または一方の型から他方の型への暗黙の型変換が存在している必要があります。

if-else の構築が必要となる場面で条件演算子を使用すると、計算をより簡潔に表現できます。 たとえば、次のコードでは、sin 関数の計算を行う前にゼロによる除算エラーの可能性をチェックするために、最初に if ステートメントを使用してから条件演算子を使用しています。

if(x != 0.0) s = Math.Sin(x)/x; else s = 1.0;
s = x != 0.0 ? Math.Sin(x)/x : 1.0;

条件演算子の結合規則は右から左になります。 a ? b : c ? d : e という式は、(a ? b : c) ? d : e ではなく、a ? b : (c ? d : e) と評価されます。

条件演算子は、オーバーロードできません。

使用例

class ConditionalOp
{
    static double sinc(double x)
    {
        return x != 0.0 ? Math.Sin(x) / x : 1.0;
    }

    static void Main()
    {
        Console.WriteLine(sinc(0.2));
        Console.WriteLine(sinc(0.1));
        Console.WriteLine(sinc(0.0));
    }
}
/*
Output:
0.993346653975306
0.998334166468282
1
*/

参照

参照

C# 演算子

if-else (C# リファレンス)

概念

C# プログラミング ガイド

その他の技術情報

C# リファレンス