C# Switch ステートメントでフォールスルー動作を実現するにはどうすればよいですか?
Jan 04, 2025 am 07:29 AMC# で Switch ステートメントはフォールスルーできますか?
C# の Switch ステートメントは通常、一致したケースに関連付けられたコードを実行してからスイッチを終了します。ただし、「フォールスルー」として知られる、あるケースを別のケースにフローさせることが望ましい場合があります。
ここに示した例では、NumberToWords メソッドは数値を対応する単語表現に変換しようとします。 3 つの配列を使用して、数字、10 の位、10 の位を表します。 switch ステートメントは、適切なケースに一致する入力数値の長さを考慮します。
- 数値が 3 桁 (ケース 3) の場合、百の部分の単語が追加されます。
- If数値が 2 桁の場合 (ケース 2)、特殊なケース (10 の位または 10 の位) がチェックされます。
- 数値が 1 桁の場合 (ケース 2) 1) では、1 の位の番号が追加されます。
ただし、switch ステートメントでは各ケースの後に実行する場所が明示的に指定されていないため、C# コンパイラはエラーをスローします。デフォルトでは、C# では、フォールスルーを防ぐために、各ケースに Break ステートメントまたは goto ステートメントが必要です。
C# でフォールスルーを実現するには、次の手法を利用できます:
-
空のケース: コードなしでケースを定義し、次のケースの実行を許可します。
switch (/*...*/) { case 0: break; // fall through to case 1 case 1: // do something break; }
ログイン後にコピー -
goto case: goto ステートメントを使用して、スイッチ内の特定のケースにジャンプします。
switch (/*...*/) { case 0: goto case 1; case 1: // do something break; }
ログイン後にコピー -
gotodefault: デフォルトにジャンプするには、gotodefault ステートメントを使用します。 case.
switch (/*...*/) { case 0: goto default; default: // do something break; }
ログイン後にコピー
元の NumberToWords の例では、goto を使用して目的のフォールスルー動作を実現できます。
switch (number.ToString().Length) { case 3: ans += string.Format("{0} hundred and ", numbers[number / 100]); goto case 2; 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]); goto case 1; case 1: int o = number % 10; ans += numbers[o]; break; default: throw new ArgumentException("number"); }
一方、フォールスルーはより簡潔な動作を提供します。特定のシナリオでの実装では、慎重に使用することが重要です。過度のフォールスルーはコードが混乱し、保守が困難になる可能性があるため、慎重に使用する必要があります。
以上がC# Switch ステートメントでフォールスルー動作を実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

人気の記事

人気の記事

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











C言語関数によって返される値の種類は何ですか?返品値を決定するものは何ですか?

STL(ソート、検索、変換など)のアルゴリズムを効率的に使用するにはどうすればよいですか?
