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:

TypVad den lagrarExempel
intHeltal42, -7, 1138
doubleDecimaltal3.14, -0.5, 9999.99
decimalDecimaltal (exakt, pengar)199.99m, 0.01m
stringText"Hej!", "Obi Wan Kenobi"
boolSant eller falskttrue, false
charEtt enda tecken'A', '!', '9'

Så här ser det ut i kod

// Antal poäng i ett spel — heltal
int score = 1138;
// Priset på en kaffekopp — exakt decimaltal
decimal price = 29.90m;
// Spelarens namn
string playerName = "Pelle";
// Är spelaren vid liv?
bool isAlive = true;
// Första bokstaven i betyget
char 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 decimaldelen
int price = 29; // 29.90 avrundas till 29 — pengarna försvinner
// Bättre
decimal price = 29.90m;
// Inte bra: string kan inte räkna
string count = "5";
int sum = count + 3; // Fungerar inte — du kan inte addera text och siffror
// Bättre
int count = 5;
int sum = count + 3; // = 8

double 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 koordinater
decimal price = 149.95m; // Exakt — inget avrundningsfel

m 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 — 8
string 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.