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 |