Effiziente Datentypkonvertierung mit C (Teil 3)
Kommentare

Convert vs. Try/Parse
Alternativ zu den beiden vorherigen Methoden können die verfügbaren Umwandlungsmethoden der Convert-Klasse eingesetzt werden. Auch die dort verfügbaren Methoden zur Konvertierung

Convert vs. Try/Parse

Alternativ zu den beiden vorherigen Methoden können die verfügbaren Umwandlungsmethoden der Convert-Klasse eingesetzt werden. Auch die dort verfügbaren Methoden zur Konvertierung verwenden die aktuellen Ländereinstellungen der Systemsteuerung. Genau wie bei Parse/TryParse können den Methoden länderspezifische Formatangaben mitgegeben werden (Listing 4). Die Tabelle 2 gibt einen Überblick über die verschiedenen Methoden und deren Verhalten. Wie aus der Tabelle 2 ablesbar ist, unterscheiden sich die Methoden lediglich in der Behandlung der Eingangswerte. Wird z. B. ein Nullwert übergeben, wirft die Parse-Methode eine ArgumentNullException und die Convert-Methode gibt als Ergebnis 0 zurück. Welche Methode verwendet wird, kann also davon abhängig gemacht werden, wie mit möglichen Nullwerten umgegangen werden soll.

Listing 4

public static void TestConvertLocale()
{
  string betrag = "14.99";
  decimal betragValue = Convert.ToDecimal(betrag);
  Console.WriteLine("Ohne FormatInfo: {0}", betragValue);

  CultureInfo ci = new CultureInfo("en-US");
  betragValue = Convert.ToDecimal(betrag, ci.NumberFormat);
  Console.WriteLine("Mit FormatInfo: {0}", betragValue);
  Console.WriteLine(betragValue);
}  
Eingangswert Int16.TryParse Int16.Parse Convert.ToInt16
„777“ Liefert gültigen Zahlenwert. Signalisiert über bool-Rückgabewert (true) die erfolgreiche Konvertierung. Liefert gültigen Zahlenwert. Liefert gültigen Zahlenwert.
565656566 Liefert 0 als Ergebnis. Signalisiert über bool-Rückgabewert (false) die fehlgeschlagene Konvertierung. Konvertierung nicht möglich. Zahl zu groß. Wirft OverflowException Konvertierung nicht möglich. Zahl zu groß. Wirft OverflowException.
„Text“ Liefert 0 als Ergebnis. Signalisiert über bool-Rückgabewert (false) die fehlgeschlagene Konvertierung. Konvertierung nicht möglich. Wirft eine Ausnahme vom Typ FormatException. Konvertierung nicht möglich. Wirft eine Ausnahme vom Typ FormatException.
null Liefert 0 als Ergebnis. Signalisiert über bool-Rückgabewert (false) die fehlgeschlagene Konvertierung. Konvertierung nicht möglich. Wirft eine Ausnahme vom Typ ArgumentNullException. Liefert den Wert 0 zurück.

Tabelle 2: Verhalten von Convert und Cast

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -