Operator ?: (C#-Referenz)
Aktualisiert: November 2007
Der bedingte Operator (?:) gibt abhängig vom Wert eines booleschen Ausdrucks einen von zwei Werten zurück. Der bedingte Operator hat die Form
condition ? first_expression : second_expression;
Hinweise
Ist die Bedingung true, wird der erste Ausdruck ausgewertet; ist sie false, wird der zweite Ausdruck ausgewertet. Nur einer der beiden Ausdrücke wird jeweils ausgewertet.
Berechnungen, die andernfalls eine if-else-Konstruktion erfordern würden, können mit dem bedingten Operator präziser und eleganter ausgedrückt werden. Um z. B. bei der Berechnung der sin-Funktion eine Division durch 0 (null) zu vermeiden, kann entweder folgender Code verwendet werden:
if(x != 0.0) s = Math.Sin(x)/x; else s = 1.0;
oder, bei Verwendung des bedingten Operators,
s = x != 0.0 ? Math.Sin(x)/x : 1.0;
Der bedingte Operator ist rechtsassoziativ, sodass ein Ausdruck der Form
a ? b : c ? d : e
wie folgt ausgewertet wird:
a ? b : (c ? d : e)
und nicht wie folgt:
(a ? b : c) ? d : e
Der bedingte Operator kann nicht überladen werden.
Beispiel
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
*/