Introduktion till programmering med C# : Variabler
Innehållsförteckning
Del 2.
Variabler
Vi har redan i ovanstående kod exempel sett hur vi kan deklarera variabler. Nu ska vi titta lite närmare på hur vi kan utnyttja C# för att underlätta deklaration av variabler och framförallt se vad variabler är och vad de används till. Vi ska också kika lite närmare på en förändring som skett i och med lanseringen av .NET 6.
Arbeta med variabler
Alla applikationer bearbetar data. Data kommer in och bearbetas och skickas tillbaka eller vidare på något sätt.
Data kan komma in till våra applikationer på flera olika sätt:
- Ifrån databaser
- Ifrån användare som matar in data i applikationerna
- Ifrån filer som läses in
Det kan även vara data som vi enbart lagrar temporärt i minnet och när applikationen stängs ner så är datat förlorat. Normalt så används variabler för att lagra data som ska skickas vidare till en databas, en fil, skärmen eller till en skrivare.
Att tänka på vid användandet av variabler
När vi skapar variabler ska vi först och främst tänka på storleken på datatypen vi väljer för variabeln. Det vill säga hur mycket minne kommer den att behöva för att lagras. I andra hand hur snabbt variabeln kan bearbetas.
Hur kontrollerar vi detta?
Genom att välja en korrekt datatyp. Tänk att varje datatyp behöver en låda att lagras i och olika datatyper behöver olika stora lådor att lagras i.
Till exempel int och decimal är två olika datatyper som behöver olika stora lådor att lagras i. En int behöver 32 bytes för att lagras i minnet medan en decimal behöver 16 bytes för att lagras i minnet.
Att alltid välja en mindre typ är inte alltid det korrekta valet!
Ta till exempel en int igen. En int(32-bit) variabel behöver 32 bytes av minnet medans en long(64-bit) behöver 64 bytes. En int kanske inte blir lika snabbt bearbetad som en long på ett 64-bit operativ system.
Dessutom så kan vissa dessa lådor(datatyper) placeras intill varandra i minnet. Medans andra lådor kanske hamnar någonstans i heap arean.
Kom ihåg diskussionen angående värde typer respektive referens typer
Namngivning
För att underlätta namngivning av t ex variabler och metoder så används namngivnings standarder.
- Camel case
- name, age, dateOfBirth, vehicleName
- Används för lokala och privata variabler
- Pascal case
- Name, Age, DateOfBirth, VehicleName
- Används för typer, publika variabler och metodnamn
- Kebab case
- first-name, date-of-birth
- Används inte speciellt ofta i C# utan är mer för webb applikationer och CSS.
Vi kommer att komma tillbaka till detta i modulen Objekt Orienterad Programmering med C#.
Deklarera lokala variabler
Vi pratat väldigt mycket om variabler, nu är det dags att se hur vi kan deklarera variabler. Vi har redan sett ett sätt i exemplen ovan.
Lokala variabler är variabler som är deklarerade inuti metoder, som vi ska prata om i nästa steg. Variabler deklarerade inuti metoder har en livslängd som innebär att de endast existerar under den tid som metoden exekveras. När metoden har exekverats så frigörs minnet som den har använt och alla variablers värde är borta.
För att vara helt korrekt, så betyder det att alla värde typer är frigjorda och minnet är städat. När det gäller referens typer så ligger de kvar tills .NET gör en Garbage Collection(GC).
Det finns två olika sätt att deklarera en variabel på i .NET
- Genom att definiera vilken typ som variabeln ska ha
- Genom att låta "runtime" bestämma vilken typ som variabeln ska ha genom att titta på värdet som tilldelas variabeln, inference.
Exempel 1: Explicit data typning
public void DemoMethod()
{
int modelYear = 2020;
string manufacturer = "Volvo";
string model = "V60";
double weight = 2.5; // i ton
}
Detta är lite onödigt i detta fall att ange typen när vi ändå anger initieringsvärdet. Ett bättre och enklare sätt är att använda inference och låta runtime titta på initieringsvärdena och sätta rätt typ baserat på det.
Exempel 2: Implicit(Inference) data typning
public void DemoMethod()
{
var modelYear = 2020;
var manufacturer = "Volvo";
var model = "V60";
var weight = 2.5; // i ton
}
Att tänka på! Om vi tilldelar en implicit deklarerad variabel ett tal utan decimaler så kommer den alltid att tolkas som ett heltal. Om vi skulle vilja att den tolkas som något annat måste ange ett suffix.
- L: long
- M: decimal
- D: double
- F: float