1. ホーム
  2. c#

[解決済み] C#で[goto]をまだ使っている人はいますか、もしそうならなぜですか?[クローズド]

2022-03-13 02:13:25

質問

C#で"goto"というキーワード構文をまだ使っている人がいるのか、またその理由は何なのか気になりました。

私は、読者がコードを飛び回るようなステートメントはバッドプラクティスだと考える傾向にありますが、このような構文を使用する信頼できるシナリオがあるのでしょうか?

後藤キーワード定義

解決方法は?

稀にですが、gotoによって可読性が向上する場合があります。実際、あなたがリンクしたドキュメントには2つの例が挙げられています。

gotoの一般的な使用法は、switch文の特定のスイッチ・ケース・ラベルやデフォルト・ラベルに制御を移すことです。

goto文は、深くネストされたループから抜け出すのにも有効です。

後者については、こんな例があります。

for (...) {
    for (...) {
        ...
        if (something)
            goto end_of_loop;
    }
}

end_of_loop:

もちろん、この問題を回避するために、コードを関数にリファクタリングする、周囲にダミーブロックを使用する、などの方法もあります(参照) この質問 をご覧ください)。余談ですが、Java言語の設計者が ゴトー を完全に削除し ラベル付きブレーク ステートメントに置き換えます。