Deklarera implicit inskrivna lokala variabler
C#-kompilatorn fungerar i bakgrunden för att hjälpa dig när du skriver din kod. Den kan härleda datatypen för variabler baserat på värdet som initieras. I den här lektionen får du lära dig mer om den här funktionen, som kallas för implicit typifierade lokala variabler.
Vad är implicit typifierade lokala variabler?
En implicit inskriven lokal variabel skapas med hjälp av nyckelordet var
följt av en variabelinitiering. Till exempel:
var message = "Hello world!";
I det här exemplet skapades en strängvariabel med nyckelordet var
i stället för nyckelordet string
.
Nyckelordet var
anger för C#-kompilatorn att datatypen är underförstådd av det tilldelade värdet. När typen är underförstådd fungerar variabeln på samma sätt som om den faktiska datatypen hade använts för att deklarera den. Nyckelordet var
används för att spara på tangenttryckningar när typerna är långa eller när typen är uppenbar från kontexten.
I exemplet:
var message = "Hello world!";
Eftersom variabeln message
omedelbart anges till string
värdet "Hello World!"
förstår C#-kompilatorn avsikten och behandlar varje instans av message
som en instans av typen string
.
I själva verket skrivs variabeln message
som en string
och kan aldrig ändras. Tänk till exempel på följande kod:
var message = "Hello World!";
message = 10.703m;
Om du kör koden bör du se följande felmeddelande.
(2,11): error CS0029: Cannot implicitly convert type 'decimal' to 'string'
Kommentar
I andra programmeringsspråk används nyckelordet var
på andra sätt. I C#tilldelas variabler en typ av kompilatorn oavsett om du använder det faktiska datatypsnamnet eller tillåter kompilatorn att antyda datatypen. Med andra ord fastställs typen vid deklarationen så att variabeln aldrig kan innehålla värden av en annan datatyp.
Variabler som använder nyckelordet var
måste initieras
Det är viktigt att du förstår att nyckelordet var
beror av värdet du använder till att initiera variabeln. Om du försöker använda nyckelordet var
utan att initiera variabeln får du ett felmeddelande när du försöker kompilera koden.
var message;
Om du försöker köra den här koden när den kompileras visas följande utdata:
(1,5): error CS0818: Implicitly-typed variables must be initialized
Varför ska jag använda nyckelordet var
?
Nyckelordet var
har antagits i stor utsträckning i C#-communityn. Det är troligt att om du tittar på ett kodexempel i en bok eller online ser du nyckelordet var
som används i stället för det faktiska datatypsnamnet, så det är viktigt att förstå dess användning.
Nyckelordet var
har en viktig användning i C#. Många gånger är typen av variabel uppenbar från initieringen. I sådana fall är det enklare att använda nyckelordet var
. Nyckelordet var
kan också vara användbart när du planerar koden för ett program. När du börjar utveckla kod för en uppgift kanske du inte omedelbart vet vilken datatyp som ska användas. Med hjälp av var
kan du utveckla din lösning mer dynamiskt.
När du kommer igång rekommenderar vi att du fortsätter att använda det faktiska datatypsnamnet när du deklarerar variabler tills du blir mer bekväm med att arbeta med kod. Om du använder faktiska datatyper när du skriver din kod blir kodens syfte tydligare.
Sammanfattning
Här är vad du har lärt dig om nyckelordet var
hittills:
- Nyckelordet
var
anger för kompilatorn att den ska härleda variabelns datatyp baserat på det värde den initieras till. - Du kommer förmodligen att se nyckelordet
var
när du läser andra personers kod. Du bör dock använda datatypen när det är möjligt.