(0) exportieren Drucken
Alle erweitern
Dieser Artikel wurde manuell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

Operator ?: (C#-Referenz)

Der bedingte Operator (?:) gibt abhängig vom Wert eines booleschen Ausdrucks einen von zwei Werten zurück. Nachfolgend ist die Syntax für den bedingten Operator aufgeführt.

condition ? first_expression : second_expression;

condition muss mit true oder false ausgewertet werden. Wenn condition den Wert true hat, wird first_expression ausgewertet. Wenn condition den Wert false hat, wird second_expression ausgewertet. Nur einer der beiden Ausdrücke wird ausgewertet.

Entweder muss der Typ von first_expression und second_expression identisch sein, oder es muss eine implizite Konvertierung von einem Typ in einen anderen vorhanden sein.

Sie können mithilfe des bedingten Operators Berechnungen präziser ausdrücken, die andernfalls möglicherweise eine if-else-Konstruktion benötigen. Im folgenden Code wird z. B. zuerst eine if-Anweisung und anschließend ein bedingter Operator verwendet, um eine ganze Zahl als positiv oder negativ zu klassifizieren.


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

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

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

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.


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


Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2014 Microsoft