Tabulky převodu typů v .NET
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
. PositiveInfinity
vý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 PositiveInfinity
NegativeInfinity
nebo .
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 |