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
*/

Siehe auch

Referenz

C#-Operatoren

if-else (C#-Referenz)

Konzepte

C#-Programmierhandbuch

Weitere Ressourcen

C#-Referenz