Wanneer u een nieuwe variabele declareert in C#, initialiseert u deze meestal met een bepaald gegevenstype. Dit kan een geheel getal, decimaal getal, booleaanse waarde, tekenreeks of een ander gegevenstype zijn.
U kunt een waarde van het ene gegevenstype naar het andere converteren. Als u bijvoorbeeld een tekenreeks naar een geheel getal converteert, moet u eerst de waarde ontleden. Hier volgen enkele verschillende manieren waarop u waarden kunt converteren en parseren.
Waarom moet u gegevens converteren of parseren?
Een voorbeeld van wanneer u mogelijk gegevens moet parseren, is als u om gebruikersinvoer vraagt in een C#-consoletoepassing:
Troosten. Schrijf lijn("Vul je leeftijd in:");
string salaris = Console. Lees regel();
In dit geval voert de gebruiker een geheel getal in, maar de toepassing slaat deze standaard op als een tekenreeks. Als u de tekenreekswaarde in berekeningen probeert te gebruiken, krijgt u een compilatiefout:
Een andere reden om gegevenstypen te converteren, is om toegang te krijgen tot bepaalde methoden die alleen beschikbaar zijn voor een specifiek gegevenstype. De DateTime-structuur bevat bijvoorbeeld een functie waarmee u minuten kunt toevoegen. Als je in plaats daarvan een string zou gebruiken, zou je geen toegang hebben tot de methode:
U kunt ook een waarde naar een ander gegevenstype converteren als u de gegevenstypestructuur van a klasse gemaakt in C# of een structuur in C#.
Hoe verschillende gegevenstypen te converteren en te ontleden
U kunt verschillende gegevenstypen ontleden, zoals gehele getallen, dubbele waarden, booleaanse typen en datum/tijd-typen.
Tekenreeksen naar gehele getallen
Gebruik de methode Parse() om een tekenreeks naar een geheel getal te converteren:
tekenreeks strInt = "45";
int int32 = Int32.Ontleden (strInt);
Troosten. Schrijfregel (int32); // opbrengst: 45
U kunt de tekenreeks ook ontleden in gehele getallen met verschillende bitgroottes, zoals Int16, Int32 of Int64.
int int16 = Int16.Ontleden (strInt);
Troosten. Schrijfregel (int16); // opbrengst: 45
Als u de methode Parse() gebruikt, moet u ervoor zorgen dat de tekenreekswaarde een geheel getal vertegenwoordigt. Als u probeert een niet-gehele waarde, zoals "Hallo", te ontleden, krijgt u tijdens runtime een parseerfout.
string ongeldigString = "Hallo";
int invalidResult = Int32.Parse (invalidString);
U kunt ook de methode TryParse() gebruiken om uitzonderingen op te vangen die kunnen optreden bij het parseren:
int tryParseResult = 0;
als (Int32.TryParse(invalidString, uittryParseResult))
{
Troosten.Schrijf lijn(tryParseResult);
}
anders
{
Troosten. Schrijf lijn("Er is iets fout gegaan");
}
Gebruik de methode ToString() om een geheel getal weer om te zetten in een tekenreeks:
string intString = 45.ToString();
Troosten. Schrijfregel (intString); // opbrengst: 45
Strings naar Doubles
Het ontleden van een string naar een double lijkt sterk op het ontleden van een naar een geheel getal. Gebruik de methode Parse() uit de klasse Double:
tekenreeks strDubbel = "90.5";
dubbele d = Dubbel. Ontleden (strDouble);
Troosten. Schrijfregel (d); // uitvoer: 90,5
Net als bij gehele getallen kunt u ook de methode TryParse() gebruiken om mogelijke parseerfouten op te sporen:
tekenreeks ongeldigStringDouble = "Hallo";
dubbele tryParseDouble = 0;
als (Dubbele.TryParse(invalidStringDouble, uitprobeerParseDouble))
{
Troosten.Schrijf lijn(probeerParseDouble);
}
Gebruik de methode ToString() om een double back om te zetten in een geheel getal:
dubbele dDubbel = 90.5;
string dString = dDubbel. ToString();
Troosten. Schrijfregel (dString); // uitvoer: 90,5
Verdubbelt naar gehele getallen
U kunt casten gebruiken om een double om te zetten in een integer. Omdat een geheel getal alleen een geheel getal opslaat, worden bij de conversie de decimalen verwijderd. Als u bijvoorbeeld "12,34" converteert, wordt alleen de waarde "12" opgeslagen.
dubbele dWaarde = 12.34;
int iWaarde = (int)dWaarde;
Troosten. Schrijfregel (iValue); // uitvoer: 12
Je kunt ook een geheel getal terug casten naar een double:
dWaarde = (dubbele)ik waardeer;
Troosten. Schrijfregel (dValue); // uitvoer: 12
Strings en Booleaanse waarden
Gebruik de methode Parse() of ToBoolean() om een tekenreeks om te zetten in een boolean:
tekenreeks tekenreeksBool = "WAAR";
bool b = bool. Ontleden (stringBool);// of
b = Converteren. ToBoolean (stringBool);
Troosten. Schrijfregel (b); // uitvoer: waar
Gebruik de methode ToString() om een booleaanse waarde terug te converteren naar een tekenreeks:
tekenreeks strTrue = WAAR.ToString();
tekenreeks strFalse = vals.ToString();
Integers en Booleaanse waarden
Om een geheel getal om te zetten in een booleaanse waarde, gebruikt u de methode ToBoolean() om een "1" of "0" om te zetten in de equivalente booleaanse waarde. De waarde "1" wordt geconverteerd naar "true" terwijl "0" wordt geconverteerd naar "false":
int falseBit = 0;
int waarBit = 1;
Troosten. Schrijfregel (convert. ToBoolean (falseBit)); // uitvoer: onwaar
Troosten. Schrijfregel (convert. ToBoolean (trueBit)); // uitvoer: waar
U kunt ook een andere integerwaarde dan "1" of "0" doorgeven aan de ToBoolean()-methode. Standaard retourneert de methode nog steeds "true":
int invalidBit = 8;
Troosten. Schrijfregel (convert. ToBoolean (invalidBit)); // uitvoer: waar
Gebruik de Convert. ToInt32() methode. Als u "true" converteert, wordt een "1" geretourneerd en als u "false" converteert, wordt een "0" geretourneerd.
bool iBool = WAAR;
int bInt = Converteren. NaarInt32(iBool);
Troosten. Schrijfregel (bInt); // uitvoer: 1
Strings naar DateTime
Gebruik de DateTime. Parse() methode:
DateTime newDateTime = DateTime. Ontleed("01/01/2018 00:00:00");
Troosten. WriteLine (nieuweDatumTijd); // uitvoer: 01/01/2018 00:00:00
Gebruik de methode ToString() om een datetime terug te converteren naar een tekenreeks:
DatumTijd dt = nieuw Datum Tijd(2018, 1, 1);
string dtString = dt. ToString();
Troosten. Schrijfregel (dtString); // uitvoer: 01/01/2018 00:00:00
Waarden parseren naar verschillende gegevenstypen
U begrijpt nu hoe u waarden van het ene gegevenstype naar het andere converteert. Dit zijn niet de enige conversies die er zijn, dus voel je vrij om meer te leren over andere gegevenstypen in C#.
U kunt ook onderzoeken hoe andere gegevenstypen werken in andere talen, zoals JavaScript.