回答編集履歴
1
追記
answer
CHANGED
@@ -3,5 +3,5 @@
|
|
3
3
|
提示された2つのコードでは、後者のほうが明確に良い書き方と言えます。
|
4
4
|
|
5
5
|
C#のメソッドは、コンパイルされるときに内部で利用している変数を全て洗い出し、ローカル変数領域のサイズを決定します。このとき変数のスコープは関係ないため、どちらのコードでも同じ数の変数領域が確保されます。
|
6
|
-
前者のコードでは、
|
6
|
+
前者のコードでは、後者に比べてローカル変数`kingaku`をループ前に0初期化する処理が余分に存在しています。前者のコードの`int kingaku = 0;`を`int kingaku;`に書き直すと、**前者と後者は全く同じコンパイル結果になります。**とはいえどちらでもJITの段階で同じコードになるのでパフォーマンスへの影響は一切無いですが。
|
7
7
|
最後に、質問文でも懸念していますが、前者のコードでは変数のスコープが漏れているのが大問題です。スコープの概念はC#のレイヤ上に存在するため、コンパイル結果が等しくなっている以上無用にスコープを拡大する理由はありません。
|