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

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

Linda Hamilton
リリース: 2025-01-04 07:29:35
オリジナル
388 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート