ホームページ バックエンド開発 C++ C# Switch ステートメントでフォールスルー動作を実現するにはどうすればよいですか?

C# Switch ステートメントでフォールスルー動作を実現するにはどうすればよいですか?

Jan 04, 2025 am 07:29 AM

How Can I Achieve Fallthrough Behavior in C# Switch Statements?

C# で 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# でフォールスルーを実現するには、次の手法を利用できます:

  1. 空のケース: コードなしでケースを定義し、次のケースの実行を許可します。

    switch (/*...*/) {
     case 0: break; // fall through to case 1
     case 1:
         // do something
         break;
    }
    ログイン後にコピー
  2. goto case: goto ステートメントを使用して、スイッチ内の特定のケースにジャンプします。

    switch (/*...*/) {
     case 0: goto case 1;
     case 1:
         // do something
         break;
    }
    ログイン後にコピー
  3. 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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

c言語関数形式文字ケース変換手順 c言語関数形式文字ケース変換手順 Mar 03, 2025 pm 05:53 PM

c言語関数形式文字ケース変換手順

C言語関数によって返される値の種類は何ですか?返品値を決定するものは何ですか? C言語関数によって返される値の種類は何ですか?返品値を決定するものは何ですか? Mar 03, 2025 pm 05:52 PM

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

GULC:Cライブラリはゼロから構築されています GULC:Cライブラリはゼロから構築されています Mar 03, 2025 pm 05:46 PM

GULC:Cライブラリはゼロから構築されています

C言語関数の定義と呼び出しルールは何ですか、そして C言語関数の定義と呼び出しルールは何ですか、そして Mar 03, 2025 pm 05:53 PM

C言語関数の定義と呼び出しルールは何ですか、そして

C標準テンプレートライブラリ(STL)はどのように機能しますか? C標準テンプレートライブラリ(STL)はどのように機能しますか? Mar 12, 2025 pm 04:50 PM

C標準テンプレートライブラリ(STL)はどのように機能しますか?

明確な使用法とフレーズ共有 明確な使用法とフレーズ共有 Mar 03, 2025 pm 05:51 PM

明確な使用法とフレーズ共有

メモリに保存されているC言語関数の返品値はどこにありますか? メモリに保存されているC言語関数の返品値はどこにありますか? Mar 03, 2025 pm 05:51 PM

メモリに保存されているC言語関数の返品値はどこにありますか?

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

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

See all articles