C# で「goto」キーワード構文をまだ使用している人がいるかどうか、また、そうする理由として考えられるものは何なのかを知りたいと思いました。
私は、読者がコード内を飛び回るような記述は悪い習慣だと考える傾向がありますが、そのような構文を使用する信頼できるシナリオがあるかどうか疑問に思いました。
ベストアンサー1
goto によって実際に読みやすさが向上する (まれな) ケースがいくつかあります。実際、リンク先のドキュメントには 2 つの例がリストされています。
goto の一般的な用途は、特定の switch-case ラベルまたは switch ステートメント内の default ラベルに制御を転送することです。
goto ステートメントは、深くネストされたループから抜け出すのにも役立ちます。
後者の例を以下に示します。
for (...) {
for (...) {
...
if (something)
goto end_of_loop;
}
}
end_of_loop:
もちろん、この問題を回避する方法は他にもあります。たとえば、コードを関数にリファクタリングしたり、その周りにダミーブロックを使用したりします。(この質問詳細はこちらをご覧ください。ちなみに、Java言語設計者は、行く完全に導入し、ラベル付きブレーク代わりに声明文を出します。