stavo sperimentando con il modificatore const
durante l'esplorazione di una pletora di C# tutorial, e posto un mazzo di const
modificatori in una classe come questa senza utilizzare ovunque:Confondere avvertimento circa un campo decimale costante in C#
class ConstTesting
{
const decimal somedecimal = 1;
const int someint = 2;
...
}
Con questa classe, ottengo il seguente avviso (utilizzando csc):
ConstTesting.cs (3,19): CS0414 avviso: il campo 'ConstTesting.somedecimal' viene assegnato ma il suo valore non viene mai utilizzato
Quello che non capisco è che ho solo l'avvertimento per la const decimal
. Il const int
non mi dà alcun avvertimento, indipendentemente dall'ordine o qualcosa del genere.
La mia domanda è, perché succede? Perché il mio compilatore csc dovrebbe avvertirmi di un const
in primo luogo, e se è più importante allora perché mi avviserebbero solo di const decimal
quando sto scrivendo const int
esattamente nello stesso modo? Cosa diavolo farebbe la differenza tra int
e decimal
?
Si prega di notare:
-
- Non ho ReSharper
- Sto usando CONTRO 2010
- Sono sicuro al 100% né `const` viene utilizzato ovunque nel mio codice.
Lasciami indovinare. Da qualche parte in quel codice '...', stai usando 'someint' ma non' somedecimal'. È piuttosto sorprendente, ma se non stai usando un valore che hai assegnato ottieni (aspettalo) .. un avvertimento che ti dice che è assegnato ma non usato! Sorprendente, non è vero? –
Sono certo che non sto usando nessuno dei due in realtà. – HavelTheGreat
Sono quasi certo che lo sei! Prova 'public class Foo {const int bar = 2;}', vedrai. –