可能性の重複:これに...これは "使用に近い宣言の移動"が本当に好ましいですか?
int Platypus; string duckBill1; string duckBill2; string duckBill3; . . . using (OracleDataReader odr = ocmd.ExecuteReader()) { while (odr.Read()) { Platypus = odr.GetInt32("Platypus"); duckBill1 = odr.GetString("duckBill1"); duckBill2 = odr.GetString("duckBill2"); duckBill3 = odr.GetString("duckBill3"); switch (Platypus) { . . .
を::
Is it better to declare a variable inside or outside a loop?
ReSharperのは、私はこれを変更したい
using (OracleDataReader odr = ocmd.ExecuteReader()) {
while (odr.Read()) {
int Platypus = odr.GetInt32("Platypus");
string duckBill1 = odr.GetString("duckBill1");
string duckBill2 = odr.GetString("duckBill2");
string duckBill3 = odr.GetString("duckBill3");
switch (Platypus) {
. . .
...しかし、このように(少なくとも、そうであるように)、変数はwhileループを通して毎回1回N回宣言されています。 Resharperizedは元のものよりも本当に優れていますか?
ループ外に宣言した場合は、範囲が広くなり、解放に時間がかかることを意味します。 +1 –
@AndreCalilスコープはコレクションの適格性とは関係がないので、そうはなりません。 rsbarro氏によると、パフォーマンスへの影響はゼロです。 –
@JonHanna申し訳ありませんが、私はそのコレクションの中にコレクションがあるのか分かりません。メソッドのスコープで変数を宣言すると、メソッドの終了時まで変数は解放されません。スコープがちょうどループであれば(whileのように)、より早くリリースされます。また、空文字列でもメモリが割り当てられます:http://stackoverflow.com/a/6601485/1484750 –