Eventuali duplicati:
Is it better to declare a variable inside or outside a loop?Questa "dichiarazione di traslazione più vicina all'utilizzo" è davvero preferibile?
ReSharper vuole che io di cambiare questo:
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) {
. . .
... a questo:
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) {
. . .
... ma in questo modo (sembra, almeno, quello) i vars vengono dichiarati N volte, una volta per volta attraverso il ciclo while. Il modo ridisegnato è davvero migliore dell'originale?
E se li si dichiara fuori dal ciclo, il loro ambito sarà più ampio, il che significa che ci vorrà più tempo per essere rilasciati. +1 –
@AndreCalil No, non lo farà, perché l'ambito non ha nulla a che fare con l'ammissibilità della raccolta. L'impatto sulle prestazioni è nullo, come dice rsbarro. –
@JonHanna Mi dispiace, non vedo dove le collezioni sono nell'argomento. Se dichiari una variabile nell'ambito di un metodo, non verrà rilasciato fino alla fine del metodo. Se l'ambito è solo un ciclo (come quello 'while'), verrà rilasciato prima. E anche una stringa nulla alloca la memoria: http://stackoverflow.com/a/6601485/1484750 –