Gegevenstypen converteren

Voltooid

Tip

Zie het tabblad Tekst en afbeeldingen voor meer informatie.

Omdat C# sterk is getypt, moet u soms expliciet een waarde van het ene gegevenstype naar het andere converteren. Dit is vooral belangrijk bij het werken met gebruikersinvoer, omdat Console.ReadLine() altijd tekst (een string)) wordt geretourneerd, zelfs wanneer de gebruiker een getal typt.

Waarom conversie belangrijk is

Houd rekening met dit veelvoorkomende scenario:

Console.Write("Enter your age: ");
string ageInput = Console.ReadLine();
int nextYear = ageInput + 1;    // ERROR! Can't add int to string

Als u wiskunde wilt uitvoeren met gebruikersinvoer, moet u de tekenreeks eerst converteren naar een getal.

Methoden omzetten

C# biedt Convert methoden voor het wijzigen van waarden tussen gegevenstypen:

Methode Converteert naar Example Result
Convert.ToInt32() int Convert.ToInt32("42") 42
Convert.ToDecimal() decimal Convert.ToDecimal("19.99") 19.99m
Convert.ToDouble() dubbel Convert.ToDouble("3.14") 3.14
Convert.ToString() tekenreeks Convert.ToString(42) "42"

U kunt het eerdere scenario als volgt oplossen:

Console.Write("Enter your age: ");
string ageInput = Console.ReadLine();
int age = Convert.ToInt32(ageInput);
int nextYear = age + 1;
Console.WriteLine($"Next year you'll be {nextYear}");

U kunt deze code zelf uitvoeren in de C#-code-editor.

Parsermethoden

Een andere manier om tekenreeksen te converteren naar getallen is met de Parse methoden:

int age = int.Parse("25");
decimal price = decimal.Parse("19.99");
double average = double.Parse("87.5");

Beide Convert.ToInt32() en int.Parse() vergelijkbare dingen doen: gebruik de stijl die u wilt gebruiken.

Converteren tussen numerieke typen

Gebruik een cast om tussen numerieke typen te converteren (zoals van decimal naar int) door het doeltype tussen haakjes te plaatsen:

decimal price = 19.99m;
int wholePrice = (int)price;         // Casts to int: 19 (decimal dropped)
Console.WriteLine(wholePrice);       // Output: 19

U kunt ook casten om de decimale precisie tijdens de verdeling te behouden:

int first = 7;
int second = 2;
decimal result = (decimal)first / (decimal)second;
Console.WriteLine(result);           // Output: 3.5

Wat gebeurt er met ongeldige conversies?

Als u probeert een waarde te converteren die niet kan worden geïnterpreteerd als een getal, genereert C# een fout:

int number = Convert.ToInt32("hello");    // ERROR: Input string was not in a correct format

Voor nu moet u ervoor zorgen dat de waarde kan worden geconverteerd voordat u het probeert. Later leert u hoe u fouten probleemloos kunt afhandelen.