Non puoi dichiarare una "costante" senza la direttiva const
. Quando si riferisce a "costanti naturali" si tratta semplicemente di valori definiti da una garanzia assolutamente ovvia, qualcosa di assiomatico, ad esempio:
Ci sono 7 giorni in una settimana. Questo non cambierà mai.
Ci sono 12 pollici in un piede. Questo non cambierà mai.
Questi sembrano abbastanza fissi e difficili da identificare in modo affidabile in una situazione reale, tuttavia esistono comunque garanzie fisse simili a quelle che puoi trovare nei tuoi sistemi.
Ad esempio, supponiamo che tu stia scrivendo un servizio web e stai eseguendo la versione dei contratti come dovresti, quindi hai un servizio OblogonRepository, sarebbe ragionevole rivendicare all'interno di quel servizio:
Questa è la versione 1 dell'OblogonRepository. Questo non cambierà mai.
Ora che tutto ciò è stato detto, lasciatemi dire, questa regola sembra molto restrittiva e non sono particolarmente d'accordo.
Tuttavia è molto importante capire il comportamento di un const
in C #, in relazione a questo: Ovunque viene fatto riferimento a una const, al momento della compilazione sarà sostituito da un riferimento fisso ai valori letterali nella tabella degli assembly. Ciò significa che se si hanno altri assembly che fanno riferimento a questo const e li si compila, quindi ricompilare l'assembly con const con i valori modificati, gli assembly di riferimento not aggiorneranno il valore const fino alla ricompilazione.
Sii cauto con i consti, ma secondo la mia personale opinione soggettiva, questa regola è molto più restrittiva di quanto sia utile. Usare i comandi per cose come gli utenti massimi o i numeri di colonna è completamente comune C # idiomatico, anche se possono cambiare a differenza dei "numeri naturali".
Ecco un po 'più di ulteriore lettura su Sali che dettaglia il loro comportamento in fase di compilazione:
link
Questo articolo rivendica una regola che mi sembra abbastanza chiara (sottolineatura mia):
Thus, const should be used mainly for values that are not subject to
change, or [can be used] freely if the scope of the const is limited to the same
assembly or smaller.