Bene, è abbastanza ovvio, che una variabile che non è mai stata modificata dovrebbe essere const o read-only. La domanda che uno di questi è migliore dipende dalla situazione. Le variabili Const sono per definizione costanti - i loro valori devono essere MAI (ad esempio const int minutesInAnHour = 60;
sembra un buon candidato). Ecco perché la costante è un membro statico implicitamente e viene inizializzata durante la compilazione, ovvero il compilatore potrebbe effettivamente sostituire tutte le apparenze della costante con il valore letterale, anche se non sono sicuro che qualsiasi compilatore lo faccia effettivamente.
A sola lettura, d'altra parte, è una variabile membro il cui valore non deve cambiare, una volta inizializzata, il che significa che non è in realtà una costante, è possibile fare qualcosa nelle righe di readonly DateTime time = DateTime.Now;
. Questo, ovviamente, non sarà un membro statico, infatti sarà un membro normale solo con la restrizione che non può essere modificato una volta assegnato. Il vantaggio di questo contro contro è che se la tua variabile const cambia in qualche build, altre librerie dependad potrebbero non saperlo - possono persino avere il valore costante inserito - dovrai ricostruire tutto.
E per quanto riguarda la domanda sul perché il programma di riazioni suggerisca readonly e const - non ne sono sicuro, immagino che una variabile di sola lettura sia meno restrittiva e calcola che è quello che probabilmente lo sviluppatore voleva.
fonte
2010-03-07 13:12:37
È un consiglio sbagliato, hai reso pubblico il campo. Se avesse suggerito di usare una proprietà, allora ti avrebbe dato un buon consiglio. –