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. 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

Viz také