Typkonvertierungstabellen in .NET

Eine erweiternde Konvertierung tritt auf, wenn ein Wert eines bestimmten Typs in einen anderen Typ konvertiert wird, der gleich groß oder größer ist. Eine einschränkende Konvertierung tritt auf, wenn ein Wert eines bestimmten Typs in einen anderen Typ konvertiert wird, der kleiner ist. Die Tabellen in diesem Thema veranschaulichen die Verhaltensweisen dieser beiden Konvertierungsarten.

Widening Conversions (Erweiterungskonvertierungen)

Die folgende Tabelle beschreibt die erweiternden Konvertierungen, die ohne Informationsverlust ausgefü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, UInt64, Double, Decimal
Int64 Decimal
UInt64 Decimal
Single Double

Einige erweiternde Konvertierungen zu Single oder Double können zu einem Genauigkeitsverlust führen. Die folgende Tabelle beschreibt die erweiternden Konvertierungen, die einen Informationsverlust nach sich ziehen können.

Typ Kann konvertiert werden in
Int32 Single
UInt32 Single
Int64 Single, Double
UInt64 Single, Double
Decimal Single, Double

Narrowing Conversions (Eingrenzungskonvertierungen)

Eine einschränkende Konvertierung in Single oder Double kann zu einem Informationsverlust führen. Wenn der Zieltyp die Quelle nicht mit der gleichen Detailgenauigkeit und im gleichen Umfang wiedergeben kann, wird der resultierende Typ auf die Konstante PositiveInfinity oder NegativeInfinity festgelegt. PositiveInfinity resultiert aus der Division einer positiven Zahl durch null und wird auch zurückgegeben, wenn der Wert eines Single- oder Double-Typs den Wert des Felds MaxValue überschreitet. NegativeInfinity resultiert aus der Division einer negativen Zahl durch null und wird auch zurückgegeben, wenn der Wert eines Single- oder Double-Typs den Wert des Felds MinValue unterschreitet. Eine Konvertierung aus einem Double- in einen Single-Typ kann zu PositiveInfinity oder NegativeInfinity führen.

Eine einschränkende Konvertierung kann auch zum Verlust von Informationen für andere Datentypen führen. Es wird jedoch eine OverflowException ausgelöst, wenn der Wert eines zu konvertierenden Typs außerhalb des von den Feldern MaxValue und MinValue des Zieltyps angegebenen Bereichs liegt und die Konvertierung von der Runtime geprüft wird, um sicherzustellen, dass der Wert des Zieltyps den MaxValue oder MinValue nicht überschreitet. Konvertierungen, die mit der System.Convert-Klasse ausgeführt werden, werden immer auf diese Weise überprüft.

Die folgende Tabelle enthält Konvertierungen, die eine OverflowException über System.Convert oder eine andere Konvertierungsprüfung auslösen, wenn der Wert des zu konvertierenden Typs außerhalb des definierten Bereichs des resultierenden Typs 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

Siehe auch