Sdílet prostřednictvím


Rozšíření a zúžení převodů (Visual Basic)

Důležitým aspektem při převodu typu je, zda výsledek převodu je v rozsahu určení datového typu.

A rozšiřující změní hodnotu na datový typ, který můžete povolit pro libovolné možná hodnota původní data.Rozšiřování převody zachování hodnoty zdroj, ale můžete změnit jeho znázornění.To nastane v případě převodu z integrálního typu na Decimal, nebo z Char na String.

A zužující převody změní hodnotu na datový typ, který nemusí být schopna uchovat některé z možných hodnot.Například se zaokrouhlí desetinnou hodnotu při převodu integrálního typu a číselný typ převáděných do Boolean na buď True nebo False.

Rozšiřující převody

Následující tabulka zobrazuje standardní rozšiřování převody.

Typ dat

Rozšiřuje na datové typy 1

SByte

SByte, Short, Integer, Long, Decimal, Single, Double

Byte

Byte, Short, UShort, Integer, UInteger, Long, ULong, Decimal, Single, Double

Short

Short, Integer, Long, Decimal, Single, Double

UShort

UShort, Integer, UInteger, Long, ULong, Decimal, Single, Double

Integer

Integer, Long, Decimal, Single, Double2

UInteger

UInteger, Long, ULong, Decimal, Single, Double2

Dlouhá

Long, Decimal, Single, Double2

ULong

ULong, Decimal, Single, Double2

Desetinné číslo

Decimal, Single, Double2

Jednoduché

Single, Double

Double

Double

Žádné Výčtový typ (výčtu)

Jeho základní typ nedílnou a jakéhokoli typu, které rozšiřuje základní typ.

Char

Char, String

Charmatice

Charpole,String

Jakýkoliv typ

Objekt

Jakékoli odvozeného typu.

Všechny základní typ, ze kterého je odvozen 3.

Jakýkoliv typ

Rozhraní, které implementuje.

Nic

Typ dat nebo typ objektu.

1 Podle definice každý typ dat rozšiřuje sám na sebe.

2 Převody z Integer, UInteger, Long, ULong, nebo Decimal na Single nebo Double může způsobit ztrátu přesnosti, ale nikdy ke ztrátě velikosti.V tomto smyslu není k utrpět ztrátu informací.

3 Může zdát překvapivé, že je převod z odvozeného typu na jeden z jeho základních typů rozšiřování.Odůvodnění je, že odvozený typ obsahuje členy základní typ, takže se kvalifikuje jako základní typ instance.V opačném směru základní typ neobsahuje žádné nové členy definované odvozeného typu.

Rozšiřování převody proběhnout úspěšně v době běhu a nikdy utrpět ztrátu dat.Je implicitně vždy provést, ať už Option Strict – příkaz nastaví typ kontroly přepnout do On nebo Off.

Zužující převody

Následující standardní zužujícího převodu:

  • Tabulka reverzní směrech rozšiřujícího převodu v předchozím (s výjimkou, že každý typ rozšiřuje sám na sebe)

  • Převody v obou směrech mezi Boolean a libovolný číselný typ

  • Převody z libovolného číselného typu žádné Výčtový typ (Enum)

  • Převody v obou směrech mezi řetězec a libovolný číselný typ Boolean, nebo datum

  • Převod z datového typu nebo objektu zadejte typ odvozený z ní

Zužujícího převodu není vždy úspěšné v době běhu a může selhání nebo utrpět ztrátu dat.Pokud cílový datový typ nemůže přijímat hodnoty převodu dojde k chybě.Například číselný převod může způsobit přetečení.Kompilátor neumožňuje provádět zužujícího převodu implicitně Option Strict – příkaz nastaví typ kontroly přepnout do Off.

[!POZNÁMKA]

Chyba zúžení převodu je potlačena pro převody z prvků For Each…Next kolekci řídicí proměnná smyčky.Další informace a příklady naleznete v části "Zužující převody" v For Each...Next – příkaz (Visual Basic).

Použití zužující převody

Pokud víte, že zdrojová hodnota lze převést na typ cílového data bez chyb nebo ztrátě dat použijete zužujícího převodu.Pokud máte například String , že znáte obsahuje "True" nebo "False", můžete použít CBool klíčové slovo převést na Boolean.

Výjimky při převodu

Rozšiřování převody vždy úspěšné, a proto nejsou jejich vyvoláním výjimky.Zužujícího převodu při selhání, nejčastěji vyvolávají následující výjimky:

Pokud definuje třídy nebo struktury CType – funkce (Visual Basic) sloužit jako operátor převodu z této třídy nebo struktury, nebo který CType lze vyvolat jakékoli výjimky, které považuje za vhodné.Navíc, CType mohou volat Visual Basic funkce nebo .NET Framework metod, které zase může vyvolat různé výjimky.

Změny během převody typu odkazu

Převod z Typ odkazu zkopíruje pouze ukazatel na hodnotu.Vlastní hodnota nebudou zkopírovány ani jiným způsobem změněna.Jediná věc, která může změnit je datový typ proměnné podržíte ukazatel myši.V následujícím příkladu typ dat je převeden z odvozené třídy na základní třída, ale je objekt, který obě proměnné nyní přejděte beze změny.

' Assume class cSquare inherits from class cShape.
Dim shape As cShape
Dim square As cSquare = New cSquare
' The following statement performs a widening
' conversion from a derived class to its base class.
shape = square

Viz také

Úkoly

Postupy: Převedení objektu na jiný typ v jazyce Visual Basic

Referenční dokumentace

Souhrn datových typů (Visual Basic)

Funkce pro převod typů (Visual Basic)

Koncepty

Datové typy v jazyce Visual Basic

Implicitní a explicitní převody (Visual Basic)

Převody mezi řetězci a ostatními typy (Visual Basic)

Převody pole (Visual Basic)

Další zdroje

Převody typů v jazyce Visual Basic