The_HulkMedlem sedan juni 20031 837 inlägg Går det inte att ha en static int i case-satsen?
Jag har en klass som innehåller en massa static int för att status på klassen.
nu vill jag kolla vilken status ett objekt har i en switch-sats
class test
{
static int status_new = 1;
static int status_old = 2;
.
.
.
}
...
test o = new test();
switch(o.status)
{
case test.status_new:
...
break;
case test.status_old:
...
break;
}
gör jag så här så får jag kompileringsfel. Felmeddelandet lyder: "Ett konstantvärde förväntas"
vet att det inte är helt korrekt kod men principen är iaf där.
PhorpherMedlem sedan feb. 20002 300 inlägg En staticdeklarerad klassvariabel är inte konstant. Static betyder att den "spänner över alla instanser av klassen". Använd const istället.
Red;
För att förtydliga keywordet "static". Nånting som är static tillhör klassen och inte en instans av klassen. Deklarerar du en variabel static i en klass och ändrar värdet på den i en instans av klassen så är den även ändrad i andra instanser av klassen just för att den tillhör typen och inte instanserna. ;)
Keywordet const används för att deklarera någonting som konstant och oföränderligt.
Det är inte bara variabler som kan vara const eller static utan även t.ex. metoder och klasser.
The_HulkMedlem sedan juni 20031 837 inlägg Bugar och tackar för utförligt svar.
men om en variael är const, kan man då komma åt den utan att behöva skapa ett objekt av klassen?
Eller ska man använda static och const tillsammans?
GladhMedlem sedan maj 20012 812 inlägg
Eller ska man använda static och const tillsammans?
Japp. Fast i dessa fallen så brukar man använda sig av Enumerations istället för att själv uppfinna hjulet återigen.
- M