Domanda

Const viene cotto nel codice client. Readonly non è. Ma const è più veloce. Può essere solo un po 'però.

La domanda che ci sia, è sempre qualsiasi scenario in cui si dovrebbe preferire const sopra readonly? O per riformulare, non siamo praticamente sempre meglio usare un readonly al posto di un const (tenendo presente la cosa cottura sopra detto)?

È stato utile?

Soluzione

Credo che il tempo solo "const" è appropriato è quando v'è una specifica che si sta la codifica contro che è più durevole rispetto al programma che si sta scrivendo. Per esempio, se si sta attuazione del protocollo HTTP, avendo un membro const per "GET" è appropriato perché questo non cambierà mai, ed i clienti può certamente hard-code che nelle proprie applicazioni compilate senza preoccuparsi che è necessario cambiare il il valore più tardi.

Se c'è qualche possibilità a tutti è necessario modificare il valore nelle versioni future, non utilizzare const.

Oh! E mai assumere const è più veloce di un campo di sola lettura a meno che non hai misurato esso. Ci sono le ottimizzazioni JIT che possono rendere quindi in realtà è esattamente lo stesso.

Altri suggerimenti

Const vs sola lettura :

  

Una rapida sintesi sulle differenze   tra 'const' e 'sola lettura' in C #:   'Const':

     
      
  • Non può essere statico.
  •   
  • Il valore è valutato a time Compila.
  •   
  • Initiailized a soli dichiarazione.
  •   
     

'sola lettura':

     
      
  • Può essere sia un'istanza di livello o statico.
  •   
  • Il valore è valutata a in fase di esecuzione.
  •   
  • può essere inizializzato in dichiarazione o per codice nel costruttore.
  •   

Correzione: gli Stati sopra const non può essere statico. Questo è un termine improprio. Essi non possono avere la parola chiave static applicato perché sono già statiche.

Quindi si utilizza const per gli elementi statici che si desidera valutati al momento della compilazione.

È possibile utilizzare un valore const come un caso in un'istruzione switch, FWIW.

in sola lettura è utile quando l'inizializzazione non è semplice.
const può essere utilizzato quando si è sicuri del valore prima di essere compilato.

In un modo, di sola lettura è un const runtime & const è un valore costante di tempo di compilazione.

EDIT: Se si guarda a un certo codice utilizzando www.koders.com, vi accorgerete che c'è un uso di sola lettura in cui avrebbe potuto essere utilizzato const. Credo che, il motivo dietro che potrebbe essere esso è modificabile nel costruttore (se necessario). In caso di const (soprattutto pubblici), si ha la possibilità di rompere il codice del client dipende dal codice.

Io di solito uso solo const per cose che so sarà mai cambiare, come la velocità della luce nel vuoto.

io preferisco di sola lettura per cose che potrebbero potenzialmente di cambiamento. In questo modo ho solo bisogno di ricompilare una DLL se un cambiamento accade. Un'eccezione a questa regola è se la variabile è privata / protetta / amichevole per la sua propria assemblea. In questi casi è sicuro da usare const.

const non può essere utilizzata per le classi o strutture (tranne per le costanti stringa e nullo, come Mr. Skeet segnalato), solo per i tipi di valore e vi si accede campi statici. Il valore di un const è impostata in fase di compilazione e deve essere impostato quando viene dichiarato.

in sola lettura può essere utilizzato per qualsiasi cosa, tranne le enumerazioni e può essere sia un campo statico o istanza. Il valore di una sola lettura è impostata in fase di esecuzione e può essere impostato in modo diverso a seconda del costruttore viene chiamato.

Ecco una buona pagina per una panoramica del const, in sola lettura e le parole chiave statiche .

Si dovrebbe preferire modificatore che vengono testati al momento della compilazione sopra modificatore che vengono testati durante l'esecuzione (in questo contesto const sopra sola lettura). E si dovrebbe sempre usare i modificatori che supportano la semantica è necessario. Se qualcosa non è fatto per essere modificato -. Proteggerlo o qualcuno scriverà qualcosa ad esso (per caso o per ignoranza)

Si dovrebbe usare const ogni volta che si può impostare il valore nella dichiarazione e non c'è bisogno di aspettare per il costruttore.

Un buon uso di const è per le chiavi di coppie chiave / valore. Ad esempio, se si sta ancora utilizzando appSetting (invece di ApplicationSettings), in realtà non ha senso per di carico il nome della chiave per un'impostazione di configurazione. Se viene utilizzato in diversi luogo, attaccare la chiave in un const.

Usa const quando i campi sono di tipo semplice (numero, booleano o stringa) e il loro valore non sarà mai cambiato. Se si modificano i loro valori, il progetto deve essere ricompilato.

Utilizzare i campi readonly quando vengono inizializzati da un'altra fonte (file, database o altri codici, .etc.), Ma poi non saranno modificati.

Utilizzare i campi static readonly quando si vuole fare loro condivisi da tutte le istanze .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top