webForumDet fria alternativet
Logga in / Bli medlem

C# switch

.NET

3 svar · 847 visningar · startad av The_Hulk

Medlem sedan juni 20031 837 inlägg
Trådstart#1

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.

Medlem sedan feb. 20002 300 inlägg
#2

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.

Medlem sedan juni 20031 837 inlägg
#3

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?

Medlem sedan maj 20012 812 inlägg
#4

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

381 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
124 ms — deklarationer (db)
123 ms — hämta statistik (db)
132 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)