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