English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C# 三項演算子

C#には決定演算子があります ? :、条件演算子または三項演算子と呼ばれます。これはif-else条件の省略形。

文法:

condition ? statement 1 : statement 2

三項演算子は布尔条件から始まります。conditionの値がtrueの場合、?の後のstatementが実行されます。 1 文、それとも : の後の二番目の文が実行されます。

以下の例で三項演算子を示します。

int x = 20, y = 10;
var result = x > y ? "xがyより大きい" : "xがyより小さい";
Console.WriteLine(result);
出力:
xがyより大きい

上記の条件表現 x > y はtrueを返しますので、?の後の最初の文が実行されます。

以下の文は二番目の文を実行します。

int x = 10, y = 100;
var result = x > y ? "xがyより大きい" : "xがyより小さい";
Console.WriteLine(result);
出力:
xがyより小さい

したがって、三項演算子はif else文の省略形です。上記の例は以下のようにif else条件で書き換えられます。

int x = 10, y = 100;
if (x > y){
    Console.WriteLine("xがyより大きい");
}else{
    Console.WriteLine("xがyより小さい");
}
出力:
xがyより大きい

ネストした三項演算子

ネストした三項演算子は、条件表現を二番目の文として実現されます。

int x = 10, y = 100;
string result = x > y ? "x大于y" : 
                    x < y ? "xはyより小さい" : 
                        x == y ? "xがyに等しい" : "結果なし";
Console.WriteLine(result);

三項演算子は右結合の。式 a ? b : c ? d : e の計算結果は a ? b : (c ? d : e) で、(a ? b : c) ? d : e ではありません。

var x = 2, y = 10;
var result = x * 3 > y ? x : y > z? y : z;
Console.WriteLine(result);