Implicitní a explicitní převody (Visual Basic)
Implicitní převod nevyžaduje žádnou speciální syntaxi ve zdrojovém kódu.V následujícím příkladu Visual Basic implicitně převede hodnotu k na hodnotu s plovoucí desetinnou čárkou jednoduchá přesnost před přiřazením k q.
Dim k As Integer
Dim q As Double
' Integer widens to Double, so you can do this with Option Strict On.
k = 432
q = k
Explicitní převod používá klíčové slovo typ převodu.Visual Basicposkytuje několik takových klíčových, které převodní výrazu v závorkách na požadovaný typ.Tato klíčová slova fungují jako funkce, ale Kompilátor generuje vloženého kódu spuštění je poněkud rychlejší než pomocí volání funkce.
V následující rozšíření předchozího příkladu CInt klíčové slovo převede hodnotu q zpět na celé před přiřazením k k.
' q had been assigned the value 432 from k.
q = Math.Sqrt(q)
k = CInt(q)
' k now has the value 21 (rounded square root of 432).
Klíčová slova pro převod
Následující tabulka obsahuje klíčová slova k dispozici převodu.
Převod zadejte klíčové slovo. |
Převede výraz na datový typ |
Typy povolených dat výraz převést |
CBool |
Libovolný číselný typ (včetně Byte, SBytea výčet typů), String,Object |
|
CByte |
Libovolný číselný typ (včetně SByte a výčet typů), Boolean, String,Object |
|
CChar |
String, Object |
|
CDate |
String, Object |
|
CDbl |
Libovolný číselný typ (včetně Byte, SBytea výčet typů), Boolean, String,Object |
|
CDec |
Libovolný číselný typ (včetně Byte, SBytea výčet typů), Boolean, String,Object |
|
CInt |
Libovolný číselný typ (včetně Byte, SBytea výčet typů), Boolean, String,Object |
|
CLng |
Libovolný číselný typ (včetně Byte, SBytea výčet typů), Boolean, String,Object |
|
CObj |
Jakýkoliv typ |
|
CSByte |
Libovolný číselný typ (včetně Byte a výčet typů), Boolean, String,Object |
|
CShort |
Libovolný číselný typ (včetně Byte, SBytea výčet typů), Boolean, String,Object |
|
CSng |
Libovolný číselný typ (včetně Byte, SBytea výčet typů), Boolean, String,Object |
|
CStr |
Any numeric type (including Byte, SByte, and enumerated types), Boolean, Char, Char array, Date,Object |
|
CType |
Zadaný typ následuje čárka (,) |
Při převodu do Základní datový typ (včetně základní typ pole), stejné typy povolený pro odpovídající klíčové slovo převodu Při převodu složený datový typ, implementuje rozhraní a tříd, které dědí Při převodu třídy nebo struktury, na kterém je přetížena CType, že třídy nebo struktury |
CUInt |
Libovolný číselný typ (včetně Byte, SBytea výčet typů), Boolean, String,Object |
|
CULng |
Libovolný číselný typ (včetně Byte, SBytea výčet typů), Boolean, String,Object |
|
CUShort |
Libovolný číselný typ (včetně Byte, SBytea výčet typů), Boolean, String,Object |
Funkce CType
Funkce CType (Visual Basic) Působí na dva argumenty.První je výraz, který chcete převést a druhé třídy cílového data typu nebo objektu.Všimněte si, že první argument musí být výraz není typu.
CTypeje vložené funkce, což zkompilovaný kód umožňuje převod, často bez generování funkci volat.Zvýšení výkonu.
Srovnání CType s klíčová jiný typ převodu slova, viz Operátor DirectCast (Visual Basic) a Operátor TryCast (Visual Basic).
Základní typy
Následující příklad ukazuje použití CType.
k = CType(q, Integer)
' The following statement coerces w to the specific object class Label.
f = CType(w, Label)
Složené typy
Můžete použít CType převést na složené datové typy i jako základní typy hodnot.Lze je také použít, kterými nutil třída objektu typu jeho rozhraní, jako v následujícím příkladu.
' Assume class cZone implements interface iZone.
Dim h As Object
' The first argument to CType must be an expression, not a type.
Dim cZ As cZone
' The following statement coerces a cZone object to its interface iZone.
h = CType(cZ, iZone)
Typy polí
CTypeMůžete také převést pole datové typy, jako v následujícím příkladu.
Dim v() As classV
Dim obArray() As Object
' Assume some object array has been assigned to obArray.
' Check for run-time type compatibility.
If TypeOf obArray Is classV()
' obArray can be converted to classV.
v = CType(obArray, classV())
End If
Další informace a příklad naleznete v tématu Převody Array (Visual Basic).
Typy definující CType
Můžete definovat CType na třídy nebo struktury, které jste definovali.Umožňuje převádět hodnoty typu třídy nebo struktury.Další informace a příklad naleznete v tématu Postup: definování konverze operátoru (Visual Basic).
[!POZNÁMKA]
Hodnoty používané s klíčovým slovem převodu musí být platné pro datový typ cílového nebo dojde k chybě.Například pokud se pokusíte převést Long k Integer, hodnotu Long musí být v rozsahu platné Integer datový typ.
Upozornění |
---|
Zadání CType převést z jedné třídy typu jiného selže při běhu Pokud typ zdroje není odvozen od typu místa určení.Vyvolá toto nedodržení InvalidCastException výjimku. |
Však jeden z typů je struktura nebo třídy, které jste definovali a pokud jste definovali CType na této struktury nebo třídy lze převod úspěšný, splňuje požadavky vaší CType.Viz téma Postup: definování konverze operátoru (Visual Basic).
Provádění explicitní převod je také známa jako obsazení výraz pro daný datový typ nebo objekt třídy.
Viz také
Úkoly
Jak: převést objekt na jiný typ v jazyce Visual Basic
Poradce při potížích s typy dat (Visual Basic)
Referenční dokumentace
Souhrn typu dat (Visual Basic)
Funkce převodu typu (Visual Basic)
Koncepty
Převody mezi řetězce a jiné typy (Visual Basic)