C# switch ステートメントのフォールスルー
C# では、switch ステートメントを使用すると、コードでの意思決定を合理化できます。ただし、他の一部の言語とは異なり、デフォルトでは切り替えケース間のフォールスルーは許可されません。この動作により、個別の case ステートメントが必要であることを示すコンパイル エラーが発生します。
エラーの説明
提供されたコード スニペットは、数値を次の値に変換しようとする NumberToWords 関数を示しています。対応する文字列表現。ただし、コンパイラは、ケース間に明示的な Break ステートメントがないことを示すエラーを報告します。
発生した質問に答えるには、次のようにします。
-
フォールスルーはなぜですかdisallowed? C# は構造化プログラミングの原則に準拠しており、制御フローが明示的かつ明確に定義されていることを保証します。意図しないフォールスルーにより、あいまいなコードやエラーが発生する可能性があります。
-
フォールスルー動作を実現する方法はありますか? はい、goto キーワードを使用します。例外的な状況では採用することもできますが、コードの可読性やメンテナンス性をわかりにくくする可能性があるため、一般的には推奨されません。
代替ソリューション
フォールスルーの代わり、
-
ネストされたスイッチの使用を検討してください。ステートメント: 複数の switch ステートメントを相互に埋め込んで条件分岐を実現します。
-
条件ロジック: 明示的な if-else ステートメントまたは三項演算子ステートメントを実装して、フォールスルーに頼ることなくフローを制御します。
-
パターン マッチング: C# バージョン 7 およびその後、switch ステートメントはパターン マッチングを使用して、複雑なパターンに基づいて評価および分岐できるため、フォールスルーの必要がなくなります。
以上がC# が switch ステートメントでのフォールスルーを禁止する理由と代替手段は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。