Freigeben über


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

Siehe auch

Konzepte

C#-Programmierhandbuch

Referenz

C#-Operatoren

if-else (C#-Referenz)

Weitere Ressourcen

C#-Referenz