Typkonvertierungstabellen
Aktualisiert: November 2007
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.
Erweiterungskonvertierungen
In der folgenden Tabelle werden die Erweiterungskonvertierungen aufgelistet, die ohne Datenverlust durchgeführt werden können.
Typ |
Kann ohne Datenverlust konvertiert werden in |
---|---|
Byte |
UInt16, Int16, UInt32, Int32, UInt64, Int64, Single, Double, Decimal |
Sbyte |
Int16, Int32, Int64, Single, Double, Decimal |
Int16 |
Int32, Int64, Single, Double, Decimal |
UInt16 |
UInt32, Int32, UInt64, Int64, Single, Double, Decimal |
Char |
UInt16, UInt32, Int32, UInt64, Int64, Single, Double, Decimal |
Int32 |
Int64, Double, Decimal |
UInt32 |
Int64, Double, Decimal |
Int64 |
Decimal |
UInt64 |
Decimal |
Single |
Double |
Einige Erweiterungskonvertierungen in Single oder Double können zu Informationsverlusten 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 |
---|---|
Int32 |
Single |
UInt32 |
Single |
Int64 |
Single, Double |
UInt64 |
Single, Double |
Decimal |
Single, Double |
Eingrenzungskonvertierungen
Eine Eingrenzungskonvertierung in Single oder Double kann zum 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 bzw. NegativeInfinity. Der Wert PositiveInfinity ist das Ergebnis der Division einer positiven Zahl durch 0 (null) und wird dann zurückgegeben, wenn der Wert eines 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 dann zurückgegeben, wenn der Wert eines Single oder Double kleiner ist als der Wert des MinValue-Felds. Eine Konvertierung von Double in einen Single kann in einer PositiveInfinity oder NegativeInfinity resultieren.
Eine Eingrenzungskonvertierung kann auch bei anderen Datentypen zu Informationsverlust führen. Liegt jedoch der Wert des zu konvertierenden Typs außerhalb des Bereichs, der durch das MaxValue-Feld und das MinValue-Feld des Zieltyps bestimmt wird, wird eine OverflowException ausgelöst, wenn die Common Language Runtime die Konvertierung dahingehend prüft, ob der Wert des Zieltyps MaxValue oder MinValue übersteigt. Eine solche Überprüfung wird bei Konvertierungen, die mithilfe der System.Convert-Klasse durchgeführt wurden, immer vorgenommen. Informationen über das Durchführen von geprüften Konvertierungen ohne Verwendung der System.Convert-Klasse finden Sie im Abschnitt über explizite Konvertierung.
Die folgende Tabelle enthält die Konvertierungen, die eine OverflowException verursachen, sobald die System.Convert-Klasse oder irgendein geprüftes Konvertierungsverfahren verwendet wird und der Wert des konvertierten Typs außerhalb des zulässigen Bereichs des Zieltyps liegt.
Typ |
Kann konvertiert werden in |
---|---|
Byte |
Sbyte |
SByte |
Byte, UInt16, UInt32, UInt64 |
Int16 |
Byte, SByte, UInt16 |
UInt16 |
Byte, SByte, Int16 |
Int32 |
Byte, SByte, Int16, UInt16, UInt32 |
UInt32 |
Byte, SByte, Int16, UInt16, Int32 |
Int64 |
Byte, SByte, Int16, UInt16, Int32, UInt32, UInt64 |
UInt64 |
Byte, SByte, Int16, UInt16, Int32, UInt32, Int64 |
Decimal |
Byte, SByte, Int16, UInt16, Int32, UInt32, Int64, UInt64 |
Single |
Byte, SByte, Int16, UInt16, Int32, UInt32, Int64, UInt64 |
Double |
Byte, SByte, Int16, UInt16, Int32, UInt32, Int64, UInt64 |