?: 演算子 (C# リファレンス)
更新 : 2007 年 11 月
条件演算子 (?:) では、ブール式の値に応じて 2 つの値のいずれかが返されます。次に条件演算子の形式を示します。
condition ? first_expression : second_expression;
解説
条件が true の場合、1 番目の式が評価され、これが結果となります。条件が false の場合、2 番目の式が評価され、これが結果となります。常に 2 つの式のいずれか 1 つだけが評価されます。
if-else の構造が必要になる計算は、条件演算子を使用すると、簡潔で明快に表現できます。たとえば、sin 関数の計算で 0 による除算を避けるには、次のいずれかで記述できます。
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)
not
(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
*/