Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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 |