Avatar billede stephanryer Nybegynder
16. august 2006 - 17:22 Der er 8 kommentarer og
1 løsning

constant cannot be marked static - why not?

Jeg har en klasse kaldet Protocol som jeg vil have til at indeholde en række konstante chars som hver har sin betydning.

Grunden til at disse skal være static er, at jeg tilsyneladende kun kan benytte konstante variabler i forbindelse med en switch.

Min Protocol-klasse ser således ud:

namespace Net
{
    public static class Protocol
    {
        public static const char DELIMITIER = '|';
        public static const char CHAT_MESSAGE = '0';
        public static const char ENEMY_POSITION = '1';
    }
}

Jeg får her en fejlmeddelelse, der siger at de tre const-variabler ikke kan markeres som static.

Hvorfor kan de ikke det?

Hvis jeg fjerne "static" så virker denne klasse, men så kan jeg ikke sige "case Protocol.CHAT_MESSAGE" i min switch.

Nogen der kan greje løsningen på dette problem?

På forhånd tak.
Avatar billede stephanryer Nybegynder
16. august 2006 - 17:27 #1
Ok jeg har selv fundet ud af det.

static const = const.

Hvis man definere noget som const er det automatisk static :)
Avatar billede nielle Nybegynder
16. august 2006 - 17:28 #2
En konstant er der kon en af - den er nærmest pr. definition static i sin natur.
Avatar billede stephanryer Nybegynder
16. august 2006 - 17:47 #3
Betyder const ikke at den ikke kan ændres?
Avatar billede nielle Nybegynder
16. august 2006 - 17:56 #4
Jo, og det er jo også det samme som at sige at der kun er den ene af dem. Dette er en af grundegenskaberne ved en static.

At være static betyder dog omvendt ikke at noget er konstatnt.

Midt imellem const og static har du så readonly, som kun kan ændres i en constructor.
Avatar billede stephanryer Nybegynder
16. august 2006 - 18:10 #5
synes du roder lidt rundt i definitionerne. Men hvad ved jeg.

At noget ikke kan ændres er for mig IKKE ensbetydende med at der kun er en af det.
Avatar billede nielle Nybegynder
16. august 2006 - 18:13 #6
Hvorfor ikke? Der er f.eks. kun en konstant som hedder pi.

Det viver ikke nogen mening om at snakke om to instanser af pi.
Avatar billede stephanryer Nybegynder
16. august 2006 - 18:15 #7
du har nok ret :) Er bare ikke vant til "const". Kommer fra java-verdenen. Der findes kun final og static. thats it.
Avatar billede nielle Nybegynder
16. august 2006 - 18:18 #8
I Java har man reserveret ordet const til senere brug. Af en eller anden grund har de bare aldrig nogen sinde taget det i brug.

final er for alle praktiske formål det samme som const når det anvendes på en variabel.
Avatar billede stephanryer Nybegynder
16. august 2006 - 18:26 #9
oki. :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester