Typkonvertierungstabellen
Eine Erweiterungskonvertierung liegt vor, wenn der Wert eines bestimmten Typs in einen anderen, mindestens ebenso großen Typ konvertiert wird. Eine Eingrenzungskonvertierung liegt vor, wenn ein Wert eines bestimmten Typs in einen anderen, kleineren Typ konvertiert wird. Die Tabellen zu diesem Thema veranschaulichen die Besonderheiten und Merkmale beider Konvertierungsarten.
Erweiternde Konvertierungen
In der folgenden Tabelle werden die Erweiterungskonvertierungen aufgelistet, die ohne Datenverlust durchgeführt werden können.
Typ |
Kann ohne Datenverlust konvertiert werden in |
---|---|
UInt16, Int16, UInt32, Int32, UInt64, Int64, Single, Double, Decimal |
|
UInt16, UInt32, Int32, UInt64, Int64, Single, Double, Decimal |
|
Einige Erweiterungskonvertierungen in Single oder Double können zu einer verringerten Genauigkeit führen. Die folgende Tabelle enthält diejenigen Erweiterungskonvertierungen, die u. U. zum Verlust von Informationen führen können.
Typ |
Kann konvertiert werden in |
---|---|
Eingrenzende Konvertierungen
Eine Eingrenzungskonvertierung in Single oder Double können zu einem Verlust von Informationen führen. Ist der Wert des Ausgangstyps größer als der des Zieltyps und kann daher nicht korrekt ausgedrückt werden, erhält der Zieltyp als Wert die Konstante PositiveInfinity oder NegativeInfinity. Der Wert PositiveInfinity ist das Ergebnis der Division einer positiven Zahl durch 0 (null) und wird auch dann zurückgegeben, wenn der Wert von Single oder Double größer ist als der Wert des MaxValue-Felds. Der Wert NegativeInfinity ist das Ergebnis der Division einer negativen Zahl durch 0 (null) und wird auch dann zurückgegeben, wenn der Wert von Single oder Double kleiner ist als der Wert des MinValue-Felds. Eine Konvertierung von Double in Single kann zu PositiveInfinity oder NegativeInfinity führen.
Eine Eingrenzungskonvertierung kann auch bei anderen Datentypen zu Informationsverlust führen. Wenn der Wert eines Typs, der konvertiert wird, jedoch außerhalb des Bereichs liegt, der vom MaxValue-Feld und vom MinValue-Feld des Zieltyps angegeben wird, wird eine OverflowException ausgelöst. Außerdem wird die Konvertierung von der Common Language Runtime überprüft, um sicherzustellen, dass der Wert des Zieltyps nicht größer als MaxValue oder kleiner als MinValue ist. Eine solche Überprüfung wird bei Konvertierungen, die mithilfe der System.Convert-Klasse durchgeführt wurden, immer vorgenommen.
Die folgende Tabelle enthält die Konvertierungen, die eine OverflowException mit System.Convert oder irgendein geprüftes Konvertierungsverfahren auslösen, wenn der Wert des konvertierten Typs außerhalb des definierten Bereichs des resultierenden Typs liegt.
Typ |
Kann konvertiert werden in |
---|---|