I eksperymentował z modyfikatorem const
badając mnóstwo C# tutoriale i umieścił kilka const
modyfikatorów w klasie jak ten bez faktycznego korzystania z nich w dowolnym miejscu:Mylenie ostrzeżenie o stałym polu przecinku w C#
class ConstTesting
{
const decimal somedecimal = 1;
const int someint = 2;
...
}
Dzięki tej klasy, pojawia się następujące ostrzeżenie (używając CSC):
ConstTesting.cs (3,19): CS0414 ostrzeżenie: pole 'ConstTesting.somedecimal' jest przypisany ale jego wartość nie jest używany
Nie rozumiem, że Mam tylko ostrzeżenie dla const decimal
. const int
nie daje mi żadnego ostrzeżenia, niezależnie od kolejności lub czegoś w tym stylu.
Moje pytanie brzmi, dlaczego tak się dzieje? Dlaczego mój kompilator csc miałby przede wszystkim ostrzec mnie przed const
, a jeśli to jest ważniejsze, to , dlaczego ostrzegałoby mnie o const decimal
, kiedy piszę const int
w dokładnie taki sam sposób? Jaka byłaby różnica między int
i ?
Uwaga:
-
- Nie mam ReSharper
- używam VS 2010
- Jestem w 100% pewien, ani `const` jest używany nigdzie w moim kodu.
Niech zgadnę. Gdzieś w tym kodzie '...' używasz 'someint', ale nie' somedecimal'. To dość zaskakujące, ale jeśli nie używasz wartości, którą wyznaczyłeś, dostajesz (czekasz na to) .. ostrzeżenie mówiące, że jest przypisane, ale nie używane! Zaskakujące, prawda? –
Jestem całkowicie pewien, że właściwie nie używam nigdzie. – HavelTheGreat
Jestem pewien, że jesteś! Wypróbuj 'public class Foo {const int bar = 2;}', zobaczysz. –