Typkonvertierungstabellen in .NETType Conversion Tables 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.Widening conversion occurs when a value of one type is converted to another type that is of equal or greater size. Eine einschränkende Konvertierung tritt auf, wenn ein Wert eines bestimmten Typs in einen anderen Typ konvertiert wird, der kleiner ist.A narrowing conversion occurs when a value of one type is converted to a value of another type that is of a smaller size. Die Tabellen in diesem Thema veranschaulichen die Verhaltensweisen dieser beiden Konvertierungsarten.The tables in this topic illustrate the behaviors exhibited by both types of conversions.

ErweiterungskonvertierungenWidening Conversions

Die folgende Tabelle beschreibt die erweiternden Konvertierungen, die ohne Informationsverlust ausgeführt werden können.The following table describes the widening conversions that can be performed without the loss of information.

TypType Kann ohne Datenverlust konvertiert werden inCan be converted without data loss to
Byte UInt16, Int16, UInt32, Int32, UInt64, Int64, Single, Double, DecimalUInt16, Int16, UInt32, Int32, UInt64, Int64, Single, Double, Decimal
SByte Int16, Int32, Int64, Single, Double, DecimalInt16, Int32, Int64, Single, Double, Decimal
Int16 Int32, Int64, Single, Double, DecimalInt32, Int64, Single, Double, Decimal
UInt16 UInt32, Int32, UInt64, Int64, Single, Double, DecimalUInt32, Int32, UInt64, Int64, Single, Double, Decimal
Char UInt16, UInt32, Int32, UInt64, Int64, Single, Double, DecimalUInt16, UInt32, Int32, UInt64, Int64, Single, Double, Decimal
Int32 Int64, Double, DecimalInt64, Double, Decimal
UInt32 Int64, UInt64, Double, DecimalInt64, UInt64, Double, Decimal
Int64 Decimal
UInt64 Decimal
Single Double

Einige erweiternde Konvertierungen zu Single oder Double können zu einem Genauigkeitsverlust führen.Some widening conversions to Single or Double can cause a loss of precision. Die folgende Tabelle beschreibt die erweiternden Konvertierungen, die einen Informationsverlust nach sich ziehen können.The following table describes the widening conversions that sometimes result in a loss of information.

TypType Kann konvertiert werden inCan be converted to
Int32 Single
UInt32 Single
Int64 Single, DoubleSingle, Double
UInt64 Single, DoubleSingle, Double
Decimal Single, DoubleSingle, Double

EingrenzungskonvertierungenNarrowing Conversions

Eine einschränkende Konvertierung in Single oder Double kann zu einem Informationsverlust führen.A narrowing conversion to Single or Double can cause a loss of information. 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.If the target type cannot properly express the magnitude of the source, the resulting type is set to the constant PositiveInfinity or NegativeInfinity. 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.PositiveInfinity results from dividing a positive number by zero and is also returned when the value of a Single or Double exceeds the value of the MaxValue field. 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.NegativeInfinity results from dividing a negative number by zero and is also returned when the value of a Single or Double falls below the value of the MinValue field. Eine Konvertierung aus einem Double- in einen Single-Typ kann zu PositiveInfinity oder NegativeInfinity führen.A conversion from a Double to a Single might result in PositiveInfinity or NegativeInfinity.

Eine einschränkende Konvertierung kann auch zum Verlust von Informationen für andere Datentypen führen.A narrowing conversion can also result in a loss of information for other data types. 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.However, an OverflowException is thrown if the value of a type that is being converted falls outside of the range specified by the target type's MaxValue and MinValue fields, and the conversion is checked by the runtime to ensure that the value of the target type does not exceed its MaxValue or MinValue. Konvertierungen, die mit der System.Convert-Klasse ausgeführt werden, werden immer auf diese Weise überprüft.Conversions that are performed with the System.Convert class are always checked in this manner.

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.The following table lists conversions that throw an OverflowException using System.Convert or any checked conversion if the value of the type being converted is outside the defined range of the resulting type.

TypType Kann konvertiert werden inCan be converted to
Byte SByte
SByte Byte, UInt16, UInt32, UInt64Byte, UInt16, UInt32, UInt64
Int16 Byte, SByte, UInt16Byte, SByte, UInt16
UInt16 Byte, SByte, Int16Byte, SByte, Int16
Int32 Byte, SByte, Int16, UInt16,UInt32Byte, SByte, Int16, UInt16,UInt32
UInt32 Byte, SByte, Int16, UInt16, Int32Byte, SByte, Int16, UInt16, Int32
Int64 Byte, SByte, Int16, UInt16, Int32,UInt32,UInt64Byte, SByte, Int16, UInt16, Int32,UInt32,UInt64
UInt64 Byte, SByte, Int16, UInt16, Int32, UInt32, Int64Byte, SByte, Int16, UInt16, Int32, UInt32, Int64
Decimal Byte, SByte, Int16, UInt16, Int32, UInt32, Int64, UInt64Byte, SByte, Int16, UInt16, Int32, UInt32, Int64, UInt64
Single Byte, SByte, Int16, UInt16, Int32, UInt32, Int64, UInt64Byte, SByte, Int16, UInt16, Int32, UInt32, Int64, UInt64
Double Byte, SByte, Int16, UInt16, Int32, UInt32, Int64, UInt64Byte, SByte, Int16, UInt16, Int32, UInt32, Int64, UInt64

Siehe auchSee also