Tabele konwersji typów na platformie .NET

Konwersja rozszerzająca występuje, gdy wartość jednego typu jest konwertowana na inny typ o równym lub większym rozmiarze. Konwersja zawężania występuje, gdy wartość jednego typu jest konwertowana na wartość innego typu, która ma mniejszy rozmiar. Tabele w tym temacie ilustrują zachowania przedstawione przez oba typy konwersji.

Konwersje rozszerzające

W poniższej tabeli opisano konwersje rozszerzające, które można wykonać bez utraty informacji.

Typ Można przekonwertować bez utraty danych na
Byte UInt16, Int16, , UInt32, UInt64Int32, Int64, , DoubleSingleDecimal
SByte Int16, , Int32, Int64, Single, , DoubleDecimal
Int16 Int32, , Int64, Single, , DoubleDecimal
UInt16 UInt32, Int32, , UInt64, Int64, Single, , DoubleDecimal
Char UInt16, UInt32, , Int32, Int64UInt64, , Single, , DoubleDecimal
Int32 Int64, , DoubleDecimal
UInt32 Int64, , UInt64, , DoubleDecimal
Int64 Decimal
UInt64 Decimal
Single Double

Niektóre konwersje rozszerzające do Single lub Double mogą spowodować utratę precyzji. W poniższej tabeli opisano konwersje rozszerzające, które czasami powodują utratę informacji.

Typ Można przekonwertować na
Int32 Single
UInt32 Single
Int64 Single, Double
UInt64 Single, Double
Decimal Single, Double

Konwersje zawężające

Konwersja zawężająca do Single lub Double może spowodować utratę informacji. Jeśli typ docelowy nie może prawidłowo wyrazić wielkości źródła, wynikowy typ jest ustawiony na stałą PositiveInfinity lub NegativeInfinity. PositiveInfinity wyniki z dzielenia liczby dodatniej przez zero i są zwracane również, gdy wartość Single lub Double przekracza wartość MaxValue pola. NegativeInfinity wynik dzielenia liczby ujemnej przez zero i jest również zwracany, gdy wartość Single lub Double spadnie poniżej wartości MinValue pola. Konwersja z elementu na element DoubleSingle może spowodować, że element PositiveInfinity lub NegativeInfinity.

Konwersja zawężająca może również spowodować utratę informacji dla innych typów danych. Jest jednak zgłaszany, OverflowException jeśli wartość typu, który jest konwertowany, znajduje się poza zakresem określonym przez typ MaxValue docelowy i MinValue pola, a konwersja jest sprawdzana przez środowisko uruchomieniowe, aby upewnić się, że wartość typu docelowego nie przekracza jej MaxValue lub MinValue. Konwersje wykonywane z klasą System.Convert są zawsze sprawdzane w ten sposób.

W poniższej tabeli wymieniono konwersje, które zgłaszają użycie System.Convert lub dowolną sprawdzoną OverflowException konwersję, jeśli wartość konwertowanego typu znajduje się poza zdefiniowanym zakresem typu wynikowego.

Typ Można przekonwertować na
Byte SByte
SByte Byte, , UInt16, , UInt32UInt64
Int16 Byte, , SByteUInt16
UInt16 Byte, , SByteInt16
Int32 Byte, , SByte, Int16, , UInt16UInt32
UInt32 Byte, , SByte, Int16, , UInt16Int32
Int64 Byte, SByteInt16, UInt16, Int32UInt32UInt64
UInt64 Byte, SByte, , Int16, UInt16, Int32, , UInt32Int64
Decimal Byte, SByte, , Int16, Int32UInt16, , UInt32, , Int64UInt64
Single Byte, SByte, , Int16, Int32UInt16, , UInt32, , Int64UInt64
Double Byte, SByte, , Int16, Int32UInt16, , UInt32, , Int64UInt64

Zobacz też