Effiziente Datentypkonvertierung mit C (Teil 4)
Kommentare

Convert vs. Cast
Statt die Klasse Convert zu verwenden, können Wertetypen auch mittels Cast-Operation in andere Typen umgewandelt werden. Ein Cast kann allerdings nur auf Typen angewendet werden, die

Convert vs. Cast

Statt die Klasse Convert zu verwenden, können Wertetypen auch mittels Cast-Operation in andere Typen umgewandelt werden. Ein Cast kann allerdings nur auf Typen angewendet werden, die eine explizite bzw. implizite Konvertierungsmethode besitzen. Das heißt, eine Zeichenkette mit Inhalt „123“ kann nicht per Cast-Operation in einen Integer-Wert umgewandelt werden. Bei der Umwandlung von primitiven Datentypen ergeben sich jedoch, je nach verwendeter Methode, unterschiedliche Ergebnisse. Dazu zeigt das Listing 5 ein entsprechendes Beispiel. Der dezimale Ausgangswert 15,5 wird in eine Ganzzahl vom Typ Integer umgewandelt. Die Methode ToInt32 der Convert-Klasse liefert das Ergebnis 16. Die anschließend durchgeführte Cast-Operation hingegen liefert den Wert 15. Dieser Umstand sollte bei der Wahl einer geeigneten Konvertierungsmethode beachtet werden. Generell liefert die ToInt32-Methode nur gerade Ganzzahlen zurück.

Listing 5

public static void TestConvertCast()
{
  double dblValue = 15.5;
  int convertValue = Convert.ToInt32(dblValue);
  int castValue = (int)dblValue;
}  

Fazit

Das .NET Framework enthält einige Möglichkeiten der Typkonvertierung. Bei der Wahl der Konvertierungsmethode ist jeweils der aktuelle Kontext ausschlaggebend. Zu beachten ist u. a., wie mit Nullwerten als Eingangswerten umgegangen und wie das Runden von Zahlen durchgeführt werden soll. Zusätzlich dürfen länderspezifische Eigenschaften von Eingangswerten nicht vergessen werden, da ansonsten unter Umständen falsche Konvertierungen durchgeführt werden.

Marc André Zhou arbeitet als Senior Consultant bei der Logica Deutschland GmbH & Co. KG. Seine Schwerpunkte liegen im Bereich SharePoint, Software-Architekturen und Frameworks, hier hauptsächlich im .NET-Umfeld. Sie erreichen ihn unter marc.andre.zhou@logica.com.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -