Operator ?: (C#-Referenz)
Der bedingte Operator (?:) gibt abhängig vom Wert eines booleschen Ausdrucks einen von zwei Werten zurück. Nachfolgend die Syntax für den bedingten Operator.
condition ? first_expression : second_expression;
Hinweise
condition muss mit true oder false ausgewertet werden. Wenn condition true ist, wird first_expression ausgewertet. Wenn condition false ist, wird second_expression ausgewertet. Nur einer der beiden Ausdrücke wird ausgewertet.
Entweder der Typ von first_expression und second_expression muss identisch sein, oder eine implizite Konvertierung muss von einem Typ in einen anderen vorhanden sind.
Sie können Berechnungen präziser ausdrücken, die andernfalls möglicherweise eine if-else-Konstruktion benötigen, indem sie den bedingten Operator verwenden. Beispielsweise wird im folgenden Code zunächst mit einer if-Anweisung und dann mit einem bedingten Operator nach einem möglichen Division-durch-Null-Fehler gesucht, bevor die sin-Funktion berechnet wird.
if(x != 0.0) s = Math.Sin(x)/x; else s = 1.0;
s = x != 0.0 ? Math.Sin(x)/x : 1.0;
Der bedingte Operator ist rechtsassoziativ. Der Ausdruck a ? b : c ? d : e wird als a ? b : (c ? d : e) und nicht als (a ? b : c) ? d : e ausgewertet.
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
*/