Tabulky převodu typů v .NET

Rozšiřující převod nastane, když je hodnota jednoho typu převedena na jiný typ, který má stejnou nebo větší velikost. Zužující převod nastane, když je hodnota jednoho typu převedena na hodnotu jiného typu, který má menší velikost. Tabulky v tomto tématu znázorňují chování zobrazené 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ádět bez ztráty informací.

Typ Lze převést bez ztráty dat na
Byte UInt16, Int16, UInt32, Int32, UInt64, Int64, Single, Double, Decimal
SByte Int16, Int32, Int64, Single, Double, Decimal
Int16 Int32, Int64, Single, Double, Decimal
UInt16 UInt32, Int32, UInt64, Int64, Single, Double, Decimal
Char UInt16, UInt32, Int32, UInt64, Int64, Single, Double, Decimal
Int32 Int64, Double, Decimal
UInt32 Int64, UInt64, Double, Decimal
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ýsledek dělení kladného čísla nulou a vrátí se také v případech, kdy hodnota Single pole překročí nebo Double překročí hodnotu MaxValue pole. NegativeInfinity výsledek dělení záporného čísla nulou a vrátí se také v případech, kdy hodnota SingleDouble pole klesne pod hodnotu MinValue pole. Převod z převodu Double na výsledek SinglePositiveInfinity nebo NegativeInfinity.

Zužující převod může také vést ke ztrátě informací pro jiné datové typy. Vyvolá se však, OverflowException pokud hodnota typu, který se převádí, spadá mimo rozsah určený cílovým typem MaxValue a MinValue poli 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 kontrolovány.

Následující tabulka uvádí převody, které vyvolá OverflowException použití System.Convert nebo jakýkoli kontrolovaný převod, pokud je hodnota typu, který je převeden, mimo definovaný rozsah výsledného typu.

Typ Lze převést na
Byte SByte
SByte Byte, UInt16, UInt32, UInt64
Int16 Byte, SByte, UInt16
UInt16 Byte, SByte, Int16
Int32 Byte, SByte, Int16, UInt16,UInt32
UInt32 Byte, SByte, Int16, UInt16, Int32
Int64 Byte, SByte, Int16, UInt16, Int32,UInt32,UInt64
UInt64 Byte, SByte, Int16, UInt16, Int32, UInt32, Int64
Decimal Byte, SByte, Int16, UInt16, Int32, UInt32, Int64, UInt64
Single Byte, SByte, Int16, UInt16, Int32, UInt32, Int64, UInt64
Double Byte, SByte, Int16, UInt16, Int32, UInt32, Int64, UInt64

Viz také