C# での Switch ステートメントのフォールスルー
switch ステートメントは、指定された変数の値に基づいて別のコードを実行する方法を提供します。 switch ステートメントには、if/else if 構造に比べていくつかの利点がありますが、その制限の 1 つは、あるケースから別のケースにフォールスルーできないことです。
C# では、コンパイラーは「フォールスルーなし」ルールを強制します。これは、ケースに到達したときに実行が次のケースの先頭にジャンプする必要があることを意味します。この動作により、コードが明確になり、複数のケースが意図せず実行されることが防止されます。
switch ステートメントを使用して数値を単語表現に変換しようとする次の例を考えてみましょう。
switch (number.ToString().Length) { case 3: ans += string.Format("{0} hundred and ", numbers[number / 100]); case 2: int t = (number / 10) % 10; if (t == 1) { ans += teens[number % 10]; break; } else if (t > 1) ans += string.Format("{0}-", tens[t]); case 1: int o = number % 10; ans += numbers[o]; break; default: throw new ArgumentException("number"); }
Whenこのコードを実行すると、コンパイラは「あるケース ラベル ('case 3:') から別のケース ラベルにコントロールがフォールスルーできません」および「あるケース ラベルからコントロールがフォールスルーできません」というエラーを生成します。 ('case 2:') を別のものに。"
C# でフォールスルー動作を実現するには、次の手法を使用できます:
フォールスルーは、不明瞭でエラーが発生しやすいコードを作成する可能性があるため、推奨されないことに注意することが重要です。一般に、複数の条件をチェックする必要がある場合は、if/else またはその他の条件構文を使用することをお勧めします。
以上がC# の Switch ステートメントは失敗する可能性がありますか?また失敗する場合はどのようにすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。