Grundlæggende Typekonvertering
Stryg for at vise menuen
Typekonvertering er processen, hvor en værdi omdannes fra én datatyppe til en anden. Dette er ofte muligt mellem typer, der repræsenterer tal. For eksempel kan du konvertere en float til en int og omvendt. Dog giver det ikke logisk mening at konvertere en string direkte til en int, og det er ikke muligt uden yderligere trin.
Der findes to typer typekonvertering: implicit typekonvertering og eksplicit typekonvertering.
Implicit typekonvertering sker automatisk, når en værdi konverteres fra én type til en anden, typisk fra en mindre til en større datatyppe.
main.cs
1234int val1 = 10; long val2 = val1; // int is automatically converted to long float val3 = var1; // int is automatically converted to float double var4 = var1; // int is automatically converted to double
Implicit typekonvertering sker automatisk, når en mindre datatyppe konverteres til en større. Størrelsen på en datatyppe bestemmes af, hvor meget data den kan indeholde, målt i bits. For eksempel kan en int indeholde 32 bits, mens en long kan indeholde 64 bits, så konvertering fra int til long sker automatisk. Tilsvarende kan en float konverteres til en double uden problemer.
Her er en liste over datatyper ordnet fra mindst til størst:
char -> int -> long -> float -> double
Eksplicit typekonvertering er, når du som programmør fortæller computeren, at en værdi skal konverteres til en anden datatyppe. Dette er nødvendigt, når man konverterer fra en større datatyppe til en mindre, fordi noget data kan gå tabt. For eksempel vil konvertering af float-værdien 3.14 til et heltal resultere i 3, hvor decimaldelen går tabt. Derfor skal du eksplicit fortælle computeren at foretage sådanne konverteringer.
main.cs
123456789101112131415using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { float val1 = 3.14f; int val2 = val1; // Error: Cannot implicitly convert type 'float' to 'int'. An explicit conversion exists (are you missing a cast?) Console.WriteLine(val1); Console.WriteLine(val2); } } }
For at rette fejlen i ovenstående kode skal vi eksplicit caste val1 til en heltalsværdi.
Syntaksen for en cast er (datatype) value, for eksempel (int) 3.1415. Så i dette tilfælde skriver vi (int) val1:
main.cs
123456789101112131415using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { float val1 = 3.14f; int val2 = (int) val1; Console.WriteLine(val1); Console.WriteLine(val2); } } }
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat