Tabulky pro převod typu
K rozšiřujícímu převodu dochází, když hodnota jednoho typu je převedena na jiný typ, který je stejné nebo větší velikosti. K zužujícímu převodu dochází, když hodnota jednoho typu je převedena na hodnotu jiného typu, který je menší velikosti. Tabulky v tomto tématu ilustrují chování, ke kterému dochází u obou typů 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 |
Je možné převést bez ztráty dat na |
---|---|
UInt16, Int16, UInt32, Int32, UInt64, Int64, Single, Double, Decimal |
|
UInt16, UInt32, Int32, UInt64, Int64, Single, Double, Decimal |
|
Některé rozšiřující převody na Single nebo Double mohou způsobit ztrátu přesnosti. Následující tabulka popisuje rozšiřující převody, které mají někdy za následek ztrátu informací.
Typ |
Může být převeden na |
---|---|
Zužující převody
Zužující převody na Single nebo Double mohou 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 je výsledkem dělení kladného čísla nulou a je také vrácena pokud hodnota Single nebo Double překročí hodnotu vlastnosti MaxValue. NegativeInfinity je výsledkem dělení záporného čísla nulou a je také vrácena pokud hodnota Single nebo Double spadne pod hodnotu vlastnosti MinValue. Převod z Double na Single může mít za výsledek PositiveInfinity nebo NegativeInfinity.
Zužující převod může také vést ke ztrátě informací u jiných datových typů. Avšak OverflowException je vyvolána, pokud hodnota typu, který je převáděn padne mimo rozsah určený vlastnostmi MaxValue a MinValue cílového typu a převod je ověřen modulem runtime k zajištění toho, aby hodnota cílového typu nepřekročila svou MaxValue nebo MinValue. Převody, které jsou prováděny pomocí třídy System.Convert jsou tímto způsobem vždy kontrolovány.
V následující tabulce jsou uvedeny převody, které vyvolají OverflowException při použití System.Convert nebo jakýchkoli ověřovaných převodů, pokud hodnota převáděného typu je mimo definovaný rozsah výsledného typu.
Typ |
Může být převeden na |
---|---|