C# type conversie: implicit, explicit, Parse en Convert methodes
C# type conversie onder de knie
Leer hoe je tussen datatypes kunt converteren in C# – van impliciete en expliciete casts tot de krachtige Parse- en Convert-API's – met duidelijke voorbeelden en best-practice richtlijnen.
Type conversie – een waarde van één datatype naar een ander omzetten – is een kernvaardigheid in C#. Begrijpen wanneer en hoe je elke conversiemethode gebruikt zorgt ervoor dat je code zowel veilig als efficiënt is.
In C# vallen conversies in twee brede categorieën:
- Impliciete type conversies
- Expliciete type conversies (casting)
1. Impliciete type conversie in C#
Impliciete conversies worden automatisch door de compiler uitgevoerd wanneer geen dataverlies kan optreden. Ze zijn veilig en vereisen geen extra syntaxis.
Typische scenario's betreffen het converteren van een kleiner numeriek type naar een groter – bijv. int naar double – zodat de waarde zonder truncatie kan worden voorgesteld.
Voorbeeld: Impliciete type conversie
using System; namespace MyApplication { class Program { static void Main(string[] args) { int numInt = 500; // Impliciete conversie double numDouble = numInt; Console.WriteLine($"numInt value: {numInt}"); Console.WriteLine($"numInt Type: {numInt.GetType()}"); Console.WriteLine($"numDouble value: {numDouble}"); Console.WriteLine($"numDouble Type: {numDouble.GetType()}"); Console.ReadLine(); } } }
Output
numInt value: 500 numInt Type: System.Int32 numDouble value: 500 numDouble Type: System.Double
Omdat double een grotere capaciteit heeft, promoot de compiler de int-waarde veilig zonder risico op overflow.
Let op: Impliciete conversies verliesen nooit data, maar vergroten wel de grootte van het resulterende type.
2. Expliciete type conversie (casting) in C#
Expliciete conversies, of casts, worden gebruikt bij het converteren van een groter naar een kleiner type of tussen ongerelateerde types. De developer moet intentie signaleren, en de compiler kan waarschuwingen geven als de conversie data kan verwerpen.
Voorbeeld: Expliciete type conversie
using System; namespace MyApplication { class Program { static void Main(string[] args) { double numDouble = 1.23; int numInt = (int)numDouble; // Expliciete cast Console.WriteLine($"Original double Value: {numDouble}"); Console.WriteLine($"Converted int Value: {numInt}"); Console.ReadLine(); } } }
Output
Original double value: 1.23 Converted int value: 1
De cast knipt het fractionele deel af, zodat 1.23 wordt 1. Als precisie belangrijk is, overweeg dan afrondingsmethodes vóór casting.
Let op: Casting wordt ook wel type casting genoemd.
3. Strings converteren met Parse()
Bij het converteren van een string naar een numeriek type bieden int.Parse, double.Parse, etc. een directe en type-veilige aanpak.
Voorbeeld: int.Parse gebruiken
using System; namespace Conversion { class Program { static void Main(string[] args) { string n = "100"; int a = int.Parse(n); Console.WriteLine($"Original string value: {n}"); Console.WriteLine($"Converted int value: {a}"); Console.ReadLine(); } } }
Output
Original string value: 100 Converted int value: 100
Het proberen te parsen van een niet-numerieke string, zoals "test", gooit een FormatException. In productiecode, wrap de aanroep in een try-catch of gebruik int.TryParse om fouten netjes af te vangen.
4. De Convert-klasse
De statische Convert-klasse biedt een brede suite methodes voor het converteren tussen veel datatypes, vaak met interne controles.
| Methode | Beschrijving |
|---|---|
ToBoolean() | Converteert een waarde naar bool |
ToChar() | Converteert een waarde naar char |
ToDouble() | Converteert een waarde naar double |
ToInt16() | Converteert een waarde naar 16-bit int |
ToString() | Converteert een waarde naar string |
Hieronder illustreren we veelvoorkomende conversies.
Voorbeeld: int → string en double
using System; namespace Conversion { class Program { static void Main(string[] args) { int num = 100; Console.WriteLine($"int value: {num}"); string str = Convert.ToString(num); Console.WriteLine($"string value: {str}"); double dbl = Convert.ToDouble(num); Console.WriteLine($"Double value: {dbl}"); Console.ReadLine(); } } }
Output
int value: 100 string value: 100 Double value: 100
Voorbeeld: string ↔ double
using System; namespace Conversion { class Program { static void Main(string[] args) { string str = "99.99"; Console.WriteLine($"Original string value: {str}"); double dbl = Convert.ToDouble(str); Console.WriteLine($"Converted Double value: {dbl}"); double num = 88.9; Console.WriteLine($"Original double value: {num}"); string newStr = Convert.ToString(num); Console.WriteLine($"Converted string value: {newStr}"); Console.ReadLine(); } } }
Output
Original string value: 99.99 Converted Double value: 99.99 Original double value: 88.9 Converted string value: 88.9
Voorbeeld: int → bool
using System; namespace Conversion { class Program { static void Main(string[] args) { int num1 = 0; int num2 = 1; bool bool1 = Convert.ToBoolean(num1); bool bool2 = Convert.ToBoolean(num2); Console.WriteLine($"Boolean value of 0 is: {bool1}"); Console.WriteLine($"Boolean value of 1 is: {bool2}"); Console.ReadLine(); } } }
Output
Boolean value of 0 is: False Boolean value of 1 is: True
Let op: In C# wordt 0 geïnterpreteerd als false; elke non-zero integer evalueert naar true.
Door deze conversietechniques te beheersen, schrijf je code die zowel type-veilig als expressief is, wat runtime fouten vermindert en leesbaarheid verbetert.
C Taal
- ASTM A1018 Kwaliteit CS Type B Laag-carboonstaal Specificaties
- ASTM A424 Kwaliteit Type II Staal: Specificaties en prestaties
- ASTM A424 Kwaliteit Type I: Belangrijkste eigenschappen en prestaties
- ASTM A792 Kwaliteit CS Type A – Gedetailleerde Eigenschappen en Specificaties
- ASTM A53 Graad A Type E – Specificaties & Belangrijkste Eigenschappen
- ASTM A53 Graad A Type S Buis – Specificaties & Belangrijkste Eigenschappen
- ASTM A792 Graad CS Type C Staal – Belangrijkste Eigenschappen & Specificaties
- Python Type Conversie & Casting onder de knie krijgen: Een uitgebreide gids
- Python getallen, typeconversie en wiskunde beheersen
- Java Type Casting: Van widening tot narrowing en verder
- Java Generics beheersen: Sortering vereenvoudigen & Typeveiligheid verbeteren