Heim >Backend-Entwicklung >C#.Net-Tutorial >Bedingungsoperatoren in C#
Bedingte Operatoren in C# beziehen sich, wie der Name schon sagt, auf die Verwendung von drei Operanden in einem C#-Programm. Die zur Bezeichnung einer Bedingung verwendeten Operanden, der Wert, wenn die Bedingung wahr ist, und der Wert, wenn die Bedingung falsch ist. Das zur Darstellung des bedingten Operators in C# verwendete Symbol ist „?“ : ’ (Die Anführungszeichen sind zu ignorieren, da sie nicht Teil des Symbols sind und zur Unterscheidung des Symbols verwendet werden).
Syntax:
condition_expression ? first_expression : second_expression;
Der erste Operand wird vor dem? angegeben. und enthält die Definition des auszuwertenden Bedingungsausdrucks. Bei der Definition des Ausdrucks muss darauf geachtet werden, dass die Auswertungsbedingung immer zu einem Bool-Ergebnis führt. Die Angabe eines booleschen Ausdrucks oder die Angabe eines fehlerhaften Ausdrucks darf nicht zu einem Kompilierungsfehler führen. Der zweite Ausdruck, der vor dem Symbol: angegeben wird, enthält die Definition oder Zuweisung für den Fall, dass die im ersten Ausdruck definierte Bedingung als wahr ausgewertet wird. Wenn also der im ersten Ausdruck ermittelte Rückgabewert wahr ist, wird der zweite Operand ausgewertet.
Der dritte Operand in der Definition enthält die Definition des Ausdrucks für den Fall, dass das bedingte Ergebnis des ersten Operanden als falsch ausgewertet wird. Alternativ werden die bedingten Operatoren als ternäre Operatoren oder Inline-IF-Operatoren bezeichnet. Bedingungsoperatoren werden in C# hauptsächlich als Alternative zur if-else-Schleife verwendet, wo diese zur Reduzierung der Größe des Codeblocks verwendet wird. Der andere große Vorteil des bedingten Operators besteht darin, dass er den Kompilierungsablauf in Form von Verzweigungsanweisungen übersetzt, wodurch die Verwendung verschachtelter if-Anweisungen reduziert wird.
Der bedingte Operator folgt dem Rechtsassoziationsprinzip, d. h. die Operationen werden von rechts nach links gruppiert. Außerdem wird die Kompilierungszeit erheblich verkürzt, da der bedingte Operator nur einen einzelnen Operandenwertausdruck auswertet. Der Wert des zweiten und dritten Operanden ist auf die Zuweisungs-, Inkrementierungs- und Dekrementierungsfunktionen beschränkt.
Versuchen wir, den Ansatz der traditionellen C#-Programmierung mit dem Bedingungsoperator zu verstehen.
Lassen Sie uns zunächst eine reguläre if else-Anweisung ausprobieren:-
Code:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { int x = 10, y = 25; string result1; if (x > y) { result1 = "value of x is greater than y"; } else { result1 = "value of x is less than y"; } Console.WriteLine(result1); Console.ReadLine(); } } }
Ausgabe:
Das obige Programm veranschaulicht eine einfache if-else-Anweisung, die den Wert zweier Variablen x und y vergleicht und ein Ergebnis gemäß dem ihnen zugewiesenen Wert und nach Auswertung der Bedingung x> ausgibt. y.
Versuchen wir, das obige Programm mit einem bedingten Operator zu reproduzieren →.
Code:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { int x = 10, y = 25; string result1; //using the Ternary Operator (?:) for the comparison of x and y variable result1 = (x > y) ? "value of x is greater than y" : "value of x is less than y"; Console.WriteLine(result1); Console.ReadLine(); } } }
Ausgabe:
Jetzt werden wir die Hauptverwendung des Bedingungsoperators identifizieren, bei der er als Mittel zur Vereinfachung der komplexen If-Else-If-Verschachtelungen verwendet wird, indem er eigene Verzweigungs- oder Verschachtelungskriterien bereitstellt, die im Vergleich zu If-Else viel weniger komplex sind if-Schleife.
Um das Gleiche zu verstehen, betrachten wir zunächst ein reguläres If-Else-If-Programm:-
Code:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { string comparisonResult; int a = 25, b = 50; if (a < b) { comparisonResult = "value of a is less than b "; } else if (a > b) { comparisonResult = " value of a is more than b"; } else { comparisonResult = "a and b are both equal in value "; } Console.WriteLine(comparisonResult); Console.ReadLine(); } } }
Ausgabe:
Jetzt werden wir sehen, wie die gleiche Logik in C# mithilfe der bedingten Operatoren implementiert wird.
Code:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { string comparisonResult; int a = 25, b = 50; //Nested Ternary Operator (?:) comparisonResult = (a < b) ? "value of a is less than b" : (a > b) ? "value of a is more than b" : "a and b are both equal in value"; Console.WriteLine(comparisonResult); Console.ReadLine(); } } }
Ausgabe:
Wir sehen also den Unterschied zwischen beiden darin, dass die Komplexität der if-else if-Anweisungen durch die Verwendung verschachtelter bedingter Operatoren stark reduziert wird. Wenn wir auch den Programmablauf verstehen, erkennen wir den Cursorfluss als das richtige Assoziationsprinzip
(a < b) ? "value of a is less than b" : (a > b) ? "value of a is more than b" : "a and b are both equal in value";
Die Codeblöcke werden mit einer separaten Farbe gekennzeichnet, wie bei einer Anweisung wie A? B: C? D : E wird das Gleiche ausgewertet als (A ? B : C)? D: E.
Bedingungsoperatoren sind drei Operandenoperatoren, die in Auswertungs- und Zuweisungsoperationen verwendet werden und separate Zuweisungen für den ausgewerteten Wert des Bedingungsoperanden haben, d. h. entweder wahr oder falsch. Die bedingten Operatoren folgen dem Rechtsassoziationsprinzip, das sich darauf bezieht, dass die Operationen von rechts nach links gruppiert werden. Der Bedingungsoperator kann nicht mit einem benutzerdefinierten Typ überladen und zur Auswertung auf einen Bool-Wert beschränkt werden. Die bedingten Operatoren stellen den am besten geeigneten Ersatz für lange if-else if-Anweisungen dar und verkürzen außerdem die Kompilierungszeit, indem sie die Möglichkeit zur Auswertung verzweigter Anweisungen bieten.
Das obige ist der detaillierte Inhalt vonBedingungsoperatoren in C#. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!