Was ist ein bedingungsoperator in C Sharp?
Ein Bedingungsoperator in C # ist ein Operator, der drei Operanden (zu überprüfende Bedingungen), den Wert, wenn die Bedingung wahr ist, und den Wert, wenn die Bedingung falsch ist, verwendet.
Ein bedingter Operator wird durch das Symbol ‚?:‘ Dargestellt. Der erste Operand (vor dem ‚?:‘ Angegeben) ist der auswertende (bedingte) Ausdruck. Es muss so sein, dass der Typ des ausgewerteten Ausdrucks implizit in ‚bool‘ umgewandelt werden kann oder dass der Operator ‚true‘ implementiert wird, um Kompilierungsfehler zu vermeiden. Der zweite und der dritte Operand steuern den Typ des bedingten Ausdrucks. Es wird häufiger in der Zuweisung verwendet und nicht als eine Anweisung, die Kompilierungsfehler erzeugt.
Wenn der Rückgabewert des ersten Operanden (bedingter Ausdruck) wahr ist, wird der zweite Operand ausgewertet. Andernfalls wird der dritte Operand ausgewertet. Daher ist das Ergebnis des Bedingungsoperators das Ergebnis der Bewertung des für die Bewertung in Betracht gezogenen Ausdrucks.
Für einen Ausdruck, der als x? A: b bezeichnet wird, wird der Operand a ausgewertet, wenn nur der Operand x (der bedingte Ausdruck) wahr zurückgibt. Andernfalls wird der Operand b ausgewertet.
Dieser Begriff wird auch als ternärer Operator oder inline if (iif) bezeichnet.
Ein Bedingungsoperator ist der einzige ternäre Operator (der drei Operanden verwendet) in C #. Es bildet eine Alternative zum if-else-Konstrukt, das eine bessere Prägnanz mit weniger Code und besserer Lesbarkeit bietet. Während der Kompilierung übersetzt der C # -Compiler den ternären Ausdruck in Verzweigungsanweisungen, die mehrere if -Anweisungen zusammenfassen und die Verschachtelung auf der Ebene des Quellcodes reduzieren können. Manchmal kann der für einen ternären Operator generierte Code die Leistung durch Neuanordnen einiger Anweisungen steigern.
Eigenschaften eines bedingten Operators sind:
Es ist rechtsassoziativ, was bedeutet, dass Operationen von rechts nach links gruppiert sind.
Es wertet immer einen der beiden nach dem Bedingungsoperatorsymbol angegebenen Ausdrücke aus. Es bewertet nie beide.
Der erste Operand muss vom Integral- oder Zeigertyp sein.
Der zweite und der dritte Operand müssen ineinander konvertierbar sein und nicht gegenseitig in einen anderen Typ konvertierbar sein.
Der Typ des Ergebnisses ist der allgemeine Typ, der ein l-Wert ist, aber nur, wenn sowohl der zweite als auch der dritte Operand vom gleichen Typ sind und beide l-Werte sind.
Nur Zuweisungsaufruf, Inkrement, Dekrement und neuer Objektausdruck können als eine Anweisung verwendet werden.
Wenn das Ergebnis einer Auswertung eines Ausdrucks, der den ternären Operator verwendet, in einer Rückgabeanweisung der Methode verwendet wird, sollte dessen Typ mit dem
Rückgabetyp der umschließenden Methode für die erfolgreiche Kompilierung übereinstimmen.
Wenn das Ergebnis keine Konstante ist, basiert der Typ des Bedingungsausdrucks auf dem gebräuchlicheren der beiden Typen.