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 |