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 |