C# の条件演算子は、その名前が示すように、C# プログラムでの 3 つのオペランドの使用を指します。条件、条件が true の場合の値、条件が false の場合の値を示すために使用されるオペランド。 C# で条件演算子を表すために使用される記号は「?」です。 : ’ (引用符は記号の一部ではなく、記号を区別するために使用されるため、無視されます)。
構文:
condition_expression ? first_expression : second_expression;
最初のオペランドは?の前に指定されています。評価条件式の定義が含まれます。式を定義する際には、評価条件の結果が常にブール値になるように注意する必要があります。ブール式を指定したり、間違った式を指定したりしても、コンパイル エラーは発生しません。 2 番目の式は、: 記号の前に指定され、最初の式で定義された条件が true と評価された場合の定義または割り当てを保持します。したがって、最初の式で決定された戻り値が true の場合、2 番目のオペランドが評価されます。
定義の 3 番目のオペランドには、最初のオペランドの条件結果が false と評価された場合の式の定義が含まれます。あるいは、条件演算子は、三項演算子またはインライン if 演算子としても知られています。 C# における条件演算子の主な使用法は、コード ブロックのサイズを削減するために使用される if-else ループの代替として見られます。条件演算子のもう 1 つの主な利点は、コンパイル フローを分岐ステートメントの観点から変換するため、必要なネストされた if ステートメントの使用が削減されることです。
条件演算子は右関連付け原則に従います。つまり、操作は右から左にグループ化されます。また、条件演算子は単一のオペランド値式のみを評価するため、コンパイル時間が大幅に短縮されます。 2 番目と 3 番目のオペランドの値は、代入、インクリメント、デクリメント関数に制限されます。
条件演算子を使用した従来の C# プログラミングへのアプローチを理解してみましょう。
まず通常の if else ステートメントを試してみましょう:-
コード:
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(); } } }
出力:
上記のプログラムは、2 つの変数 x と y の値を比較し、それらに割り当てられた値と条件 x> の評価に従って結果を出力する単純な if-else ステートメントを示しています。 y.
条件演算子 → を使用して上記のプログラムを複製してみましょう。
コード:
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(); } } }
出力:
次に、条件演算子の主な用途を特定します。条件演算子は、if-else と比較するとはるかに複雑ではない独自の分岐またはネストされた条件を提供することで、複雑な if-else if ネストを簡素化する手段として使用されます。 if ループ。
同じことを理解するために、まず通常の if-else if プログラムを考えてみましょう:-
コード:
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(); } } }
出力:
次に、条件演算子を使用して同じロジックが C# でどのように実装されるかを見ていきます。
コード:
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(); } } }
出力:
このように、入れ子になった条件演算子を使用することで if-else if ステートメントの複雑さが大幅に軽減されるため、両方の違いがわかります。また、プログラムの流れを理解すると、正しい連想原理としてカーソルの流れがわかります
(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";
A? のようなステートメントの場合、コード ブロックは別の色を使用して示されます。 B:C? D : E は (A ? B : C) ? として評価されます。 D:E.
条件演算子は、評価および代入演算で使用される 3 つのオペランド演算子であり、条件オペランドの評価値 (true または false) に個別の代入が行われます。条件演算子は、操作が右から左にグループ化される点を指す右関連付け原則に従います。条件演算子は、ユーザー定義型を使用してオーバーロードすることはできず、評価はブール値に制限されます。条件演算子は、長い if-else if ステートメントに最も適した代替手段を提供し、分岐ステートメントの評価の機会を提供することでコンパイル時間を短縮します。
以上がC# の条件演算子の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。