Sdílet prostřednictvím


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

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, Double, Decimal

Int64

Decimal

UInt64

Decimal

Single

Double

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

Int32

Single

UInt32

Single

Int64

Single, Double

UInt64

Single, Double

Decimal

Single, Double

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

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é

Odkaz

System.Convert

Koncepty

Převod typů v rozhraní .NET Framework