Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Rozšiřující převod nastane, když hodnota jednoho typu je převedena na jiný typ, který má stejnou nebo větší velikost. Zúžení převodu nastane, když je hodnota jednoho typu převedena na hodnotu jiného typu, který je menší velikost. Tabulky v tomto tématu znázorňují chování vystavené oběma typy převodů.
Rozšiřující převody
Následující tabulka popisuje rozšiřující převody, které lze provést bez ztráty informací.
| Typ | Lze převést bez ztráty dat na |
|---|---|
| Byte | UInt16, Int16, , Int32Int64SingleUInt32UInt64, , DoubleDecimal |
| 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 |
Některé rozšiřující převody nebo SingleDouble mohou způsobit ztrátu přesnosti. Následující tabulka popisuje rozšiřující převody, které někdy vedou ke ztrátě informací.
| Typ | Lze převést na |
|---|---|
| Int32 | Single |
| UInt32 | Single |
| Int64 | Single, Double |
| UInt64 | Single, Double |
| Decimal | Single, Double |
Zužující převody
Zužující převod nebo SingleDouble může způsobit ztrátu informací. Pokud cílový typ nemůže správně vyjádřit velikost zdroje, je výsledný typ nastaven na konstantu PositiveInfinity nebo NegativeInfinity. PositiveInfinityvýsledkem dělení kladného čísla nulou a vrátí se také v případech, kdy hodnota SingleMaxValue pole překročí hodnotu.Double NegativeInfinity výsledky dělení záporného čísla nulou a vrátí se také v případech, kdy hodnota Single pole klesne Double pod hodnotu MinValue pole. Převod z převodu Double na určitý Single výsledek PositiveInfinityNegativeInfinitynebo .
Zužující převod může také vést ke ztrátě informací pro jiné datové typy. Je OverflowException však vyvolána, pokud hodnota typu, který se převádí, spadá mimo oblast určenou cílovým typem MaxValue a MinValue pole a převod je kontrolován modulem runtime, aby se zajistilo, že hodnota cílového typu nepřekračuje jeho MaxValue nebo MinValue. Převody prováděné s System.Convert třídou jsou tímto způsobem vždy vráceny se změnami.
Následující tabulka uvádí převody, které můžou vyvolat OverflowException použití System.Convert nebo jakýkoli kontrolovaný převod, pokud je hodnota převedeného typu mimo definovaný rozsah výsledného typu.
| Typ | Lze převést 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, SByte, Int16, UInt16, ,UInt32Int32,UInt64 |
| 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 |