Freigeben über


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 conditiontrue ist, wird first_expression ausgewertet.Wenn conditionfalse 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 zuerst eine if-Anweisung und ein bedingter Operator, um eine Ganzzahl dann zu klassifizieren, wie positiv oder negativ.

int input = Convert.ToInt32(Console.ReadLine());
string classify;

// if-else construction.
if (input < 0)
    classify = "negative";
else
    classify = "positive";

// ?: conditional operator.
classify = (input < 0) ? "negative" : "positive";

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