Tabele konwersji typów na platformie .NETType Conversion Tables in .NET

Konwersja poszerzenia występuje, gdy wartość jednego typu jest konwertowana na inny typ, który ma równy lub większy rozmiar.Widening conversion occurs when a value of one type is converted to another type that is of equal or greater size. Konwersja zawężająca występuje, gdy wartość jednego typu jest konwertowana na wartość innego typu, który ma mniejszy rozmiar.A narrowing conversion occurs when a value of one type is converted to a value of another type that is of a smaller size. Tabele w tym temacie ilustrują zachowania wystawiane przez oba typy konwersji.The tables in this topic illustrate the behaviors exhibited by both types of conversions.

Poszerzenie konwersjiWidening Conversions

W poniższej tabeli opisano konwersje rozszerzające, które można wykonać bez utraty informacji.The following table describes the widening conversions that can be performed without the loss of information.

TypType Można przekonwertować bez utraty danych naCan 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

Niektóre poszerzenie konwersji Single Double do lub może spowodować utratę precyzji.Some widening conversions to Single or Double can cause a loss of precision. W poniższej tabeli opisano poszerzenie konwersji, które czasami powodują utratę informacji.The following table describes the widening conversions that sometimes result in a loss of information.

TypType Można przekonwertować naCan be converted to
Int32 Single
UInt32 Single
Int64 Single, DoubleSingle, Double
UInt64 Single, DoubleSingle, Double
Decimal Single, DoubleSingle, Double

Zawężanie konwersjiNarrowing Conversions

Konwersja zawężająca lub Single Double może spowodować utratę informacji.A narrowing conversion to Single or Double can cause a loss of information. Jeśli typ docelowy nie może poprawnie wyrazić wielkości źródła, wynikowy PositiveInfinity typ NegativeInfinityjest ustawiony na stałą lub .If the target type cannot properly express the magnitude of the source, the resulting type is set to the constant PositiveInfinity or NegativeInfinity. PositiveInfinitywynika z podzielenia liczby dodatniej przez zero i Single jest Double również zwracany, MaxValue gdy wartość a lub przekracza wartość pola.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. NegativeInfinitywynika z podzielenia liczby ujemnej przez zero i Single Double jest również zwracany, gdy wartość lub spadnie poniżej wartości MinValue pola.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. Konwersja z Double a Single na PositiveInfinity a NegativeInfinitymoże spowodować lub .A conversion from a Double to a Single might result in PositiveInfinity or NegativeInfinity.

Konwersja zawężająca może również spowodować utratę informacji dla innych typów danych.A narrowing conversion can also result in a loss of information for other data types. Jednak jest OverflowException generowany, jeśli wartość typu, który jest konwertowany wykracza poza zakres określony MaxValue przez MinValue typ docelowy i pola, a konwersja jest sprawdzana przez czas wykonywania, aby upewnić się, że wartość typu docelowego nie przekracza jego MaxValue lub MinValue.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. Konwersje, które są System.Convert wykonywane z klasą są zawsze sprawdzane w ten sposób.Conversions that are performed with the System.Convert class are always checked in this manner.

W poniższej tabeli wymieniono konwersje, które wyrzucają konwersję OverflowException przy użyciu System.Convert lub dowolną wartość sprawdzaną, jeśli wartość typu konwertowanego znajduje się poza zdefiniowanym zakresem typu wynikowego.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 Można przekonwertować naCan 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

Zobacz teżSee also