Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> C Taal

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:

  1. Impliciete type conversies
  2. 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.

MethodeBeschrijving
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

  1. ASTM A1018 Kwaliteit CS Type B Laag-carboonstaal Specificaties
  2. ASTM A424 Kwaliteit Type II Staal: Specificaties en prestaties
  3. ASTM A424 Kwaliteit Type I: Belangrijkste eigenschappen en prestaties
  4. ASTM A792 Kwaliteit CS Type A – Gedetailleerde Eigenschappen en Specificaties
  5. ASTM A53 Graad A Type E – Specificaties & Belangrijkste Eigenschappen
  6. ASTM A53 Graad A Type S Buis – Specificaties & Belangrijkste Eigenschappen
  7. ASTM A792 Graad CS Type C Staal – Belangrijkste Eigenschappen & Specificaties
  8. Python Type Conversie & Casting onder de knie krijgen: Een uitgebreide gids
  9. Python getallen, typeconversie en wiskunde beheersen
  10. Java Type Casting: Van widening tot narrowing en verder
  11. Java Generics beheersen: Sortering vereenvoudigen & Typeveiligheid verbeteren