Möglichkeiten der Datentypkonvertierung in C (Teil 2)
Kommentare

Parse und TryParse
Eine weitere Möglichkeit, einen Datentyp in einen anderen Typ umzuwandeln, bieten die Parse-Methoden. Neben der „sicheren“ TryParse-Methode existiert noch das „unsichere“ Gegenstück

Parse und TryParse

Eine weitere Möglichkeit, einen Datentyp in einen anderen Typ umzuwandeln, bieten die Parse-Methoden. Neben der „sicheren“ TryParse-Methode existiert noch das „unsichere“ Gegenstück Parse. Der Unterschied zwischen den beiden Methoden liegt in der Art und Weise, wie mit Fehlern innerhalb des Umwandlungsvorgangs umgegangen wird. Die einfache Parse-Methode wirft eine Ausnahme (Exception), wenn die Umwandlung nicht möglich ist. Die TryParse-Methode signalisiert über ihren Rückgabewert vom Typ Boolean, ob die Umwandlung erfolgreich durchgeführt werden konnte. Listing 4 zeigt die beiden Methoden im Einsatz. Da die TryParse-Methode auf Ausnahmen (Exceptions) verzichtet, ergibt sich gegenüber der Parse-Methode ein erheblicher Geschwindigkeitsvorteil.

Listing 4 – Parse und TryParse Example

public static void ParseAndTryParse()
{
  int intValue = Int32.Parse("42");
  float floatValue = Single.Parse("22.9");
  string strDateValue = "06.09.2011";
  DateTime dateValue = DateTime.MinValue;
  if (DateTime.TryParse(strDateValue, out dateValue))
    Console.WriteLine(dateValue.ToShortDateString());
  else
    Console.WriteLine("Keine Umwandlung möglich.");
}  

as-Operator

Bei den zuvor vorgestellten Methoden der Umwandlung ging es in erster Linie darum, vorhandene Daten – die meist als Zeichenketten vorliegen – in passende Datentypen zu konvertieren. Der as-Operator hingegen ermöglicht ausschließlich die Konvertierung zwischen kompatiblen Referenztypen. Der Operator kann also auf keine Value-Typen wie z. B. int, double usw. angewendet werden. Bei reinen Typumwandlungen zwischen Referenztypen ist der as-Operator immer der sonst üblichen Cast-Technik vorzuziehen. Der Operator arbeitet nämlich ausnahmefrei, d. h., es kommt zu keinem Laufzeitfehler, wenn die Umwandlung nicht erfolgreich durchgeführt werden konnte. Stattdessen liefert der Operator lediglich null für das Zielobjekt zurück. Listing 5 verdeutlicht den Einsatz und stellt gleichzeitig ein mögliches Verwendungsmuster vor. Nachdem der Variable objA die umgewandelte Referenz von objB zugewiesen wurde, wird die Variable objA dahingehend kontrolliert, ob eine gültige Referenz vorliegt. Ist das der Fall, kann innerhalb der if-Abfrage auf die Variable zugegriffen werden. Besitzt die Variable objA aber den Wert null, konnte keine gültige Referenz erstellt werden.

Listing 5

class A {
  public string Vorname = string.Empty;
  public string Nachname = string.Empty;
}
class B : A {
  public string Adresse = string.Empty;
}
public static void Example() {
  var objB = new B() { 
      Nachname = "Zhou", 
      Vorname = "Marc André", 
      Adresse="Musterstr. 87, 99888 Musterort" };
  A objA = objB as A;
  if (objA != null) {
    // Hier kann sicher auf die Variable objA zugegriffen werden.
  }
}  
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -