Datatyper
En datatyp talar om för C# vad för slags data som ska lagras i en variabel — och hur mycket plats det tar i minnet. Utan det vet kompilatorn ingenting. “En siffra? En text? Ett ja eller nej?” Kompilatorn är noga på den punkten.
De vanligaste typerna
Det finns massor av typer i C#, men i praktiken använder du dessa hela tiden:
| Typ | Vad den lagrar | Exempel |
|---|---|---|
int | Heltal | 42, -7, 1138 |
double | Decimaltal | 3.14, -0.5, 9999.99 |
decimal | Decimaltal (exakt, pengar) | 199.99m, 0.01m |
string | Text | "Hej!", "Obi Wan Kenobi" |
bool | Sant eller falskt | true, false |
char | Ett enda tecken | 'A', '!', '9' |
Så här ser det ut i kod
// Antal poäng i ett spel — heltalint score = 1138;
// Priset på en kaffekopp — exakt decimaltaldecimal price = 29.90m;
// Spelarens namnstring playerName = "Pelle";
// Är spelaren vid liv?bool isAlive = true;
// Första bokstaven i betygetchar grade = 'A';Välj rätt typ
Varje typ finns av en anledning. Väljer du fel typ funkar koden ändå — men du riskerar konstiga fel eller onödig minnesanvändning.
// Inte bra: du förlorar decimaldelenint price = 29; // 29.90 avrundas till 29 — pengarna försvinner
// Bättredecimal price = 29.90m;
// Inte bra: string kan inte räknastring count = "5";int sum = count + 3; // Fungerar inte — du kan inte addera text och siffror
// Bättreint count = 5;int sum = count + 3; // = 8double vs decimal
Båda lagrar decimaltal — men de är inte samma sak.
doubleär snabb och tar lite minne. Används för matte, fysik, koordinater.decimalär exakt men tyngre. Används när varje öre räknas — priser, skatter, finans.
double pi = 3.14159; // Tillräckligt exakt för koordinaterdecimal price = 149.95m; // Exakt — inget avrundningsfelm efter ett tal (149.95m) talar om för C# att det är en decimal, inte en double.
string är speciell
string är tekniskt sett en referenstyp — inte en värdestyp som int och bool. Det märks om du börjar jämföra strängar på konstiga sätt. Men för nu: använd den som vanligt, det funkar.
string city = "Göteborg";int length = city.Length; // Antal tecken — 8string upper = city.ToUpper(); // "GÖTEBORG"Sådärja. Nu vet du vad du stoppar in i variablerna. Nästa steg — testa med fel typ och se vad kompilatorn säger. Det lär man sig bra av.