Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Implicitní převod nevyžaduje ve zdrojovém kódu žádnou speciální syntaxi. V následujícím příkladu jazyk Visual Basic implicitně převede hodnotu k
na desetinnou čárku s jednoduchou přesností, než ji přiřadí 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í konverze používá klíčové slovo pro konverzi typu. Visual Basic poskytuje několik takových klíčových slov, která přetáčí výraz v závorkách na požadovaný datový typ. Tato klíčová slova fungují jako funkce, ale kompilátor vygeneruje vložený kód, takže provádění je o něco rychlejší než při volání funkce.
V následujícím rozšíření předchozího příkladu klíčové slovo CInt
převede hodnotu q
zpět na celé číslo, než ji přiřadí 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
V následující tabulce jsou uvedena dostupná klíčová slova pro převod.
Klíčové slovo převodu typů | Převede výraz na datový typ. | Povolit převod datových typů výrazů |
---|---|---|
CBool |
Logický datový typ | Libovolný číselný typ (včetně Byte , SByte a výčtových typů), String , Object |
CByte |
Datový typ Bajt | Libovolný číselný typ (včetně SByte a výčtových typů), Boolean , , String Object |
CChar |
Datový typ Char |
String , Object |
CDate |
Datumový datový typ |
String , Object |
CDbl |
Datový typ Double | Libovolný číselný typ (včetně Byte , SByte a výčtových typů), Boolean , , String Object |
CDec |
Datový typ Decimal | Libovolný číselný typ (včetně Byte , SByte a výčtových typů), Boolean , , String Object |
CInt |
Datový typ Integer | Libovolný číselný typ (včetně Byte , SByte a výčtových typů), Boolean , , String Object |
CLng |
Dlouhý datový typ | Libovolný číselný typ (včetně Byte , SByte a výčtových typů), Boolean , , String Object |
CObj |
datový typ objektu | Libovolný typ |
CSByte |
Datový typ SByte | Libovolný číselný typ (včetně Byte a výčtových typů), Boolean , , String Object |
CShort |
Krátký datový typ | Libovolný číselný typ (včetně Byte , SByte a výčtových typů), Boolean , , String Object |
CSng |
Datový typ Single | Libovolný číselný typ (včetně Byte , SByte a výčtových typů), Boolean , , String Object |
CStr |
Datový typ String | Libovolný číselný typ (včetně Byte , SByte a výčtových typů), Boolean , Char , Char pole, Date , Object |
CType |
Typ zadaný za čárkou (, ) |
Při převodu na základní datový typ (včetně pole základního typu) jsou stejné typy jako povolené pro odpovídající klíčové slovo převodu. Při převodu na složený datový typ se rozhraní, která implementuje, a třídy, ze kterých dědí, přizpůsobí. Při převodu na třídu nebo strukturu, na které jste přetížili CType , tato třída nebo struktura |
CUInt |
Datový typ UInteger | Libovolný číselný typ (včetně Byte , SByte a výčtových typů), Boolean , , String Object |
CULng |
Datový typ ULong | Libovolný číselný typ (včetně Byte , SByte a výčtových typů), Boolean , , String Object |
CUShort |
Datový typ UShort | Libovolný číselný typ (včetně Byte , SByte a výčtových typů), Boolean , , String Object |
Funkce CType
Funkce CType pracuje se dvěma argumenty. První je výraz, který se má převést, a druhý je cílový datový typ nebo třída objektu. Všimněte si, že první argument musí být výraz, nikoli typ.
CType
je vložená funkce, což znamená, že zkompilovaný kód provádí převod, často bez generování volání funkce. Tím se zlepší výkon.
Pro porovnání CType
s jinými klíčovými slovy pro převod typů viz Operátor DirectCast a Operátor TryCast.
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
k převodu hodnot na složené datové typy i na základní typy. Můžete ho také použít k převodu třídy objektu na typ jednoho z 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í
CType
lze také převést datové typy pole, 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
Pro více informací a příklad se podívejte na Převody polí.
Typy definující typ CType
Můžete definovat CType
na třídě nebo struktuře, kterou jste definovali. To vám umožní převést hodnoty na a z typu třídy nebo struktury. Další informace a příklad naleznete v tématu Postupy: Definování operátoru převodu.
Poznámka:
Hodnoty použité s klíčovým slovem převodu musí být platné pro cílový datový typ nebo dojde k chybě. Pokud se například pokusíte převést hodnotu Long
na hodnotu Integer
, musí být hodnota Long
v platném rozsahu Integer
pro datový typ.
Upozornění
Určení CType
převodu z jednoho typu třídy na jiný selže při běhu programu, pokud zdrojový typ není odvozen z cílového typu. Takové selhání vyvolá InvalidCastException výjimku.
Pokud je však jedním z typů struktura nebo třída, kterou jste definovali, a pokud jste definovali CType
tuto strukturu nebo třídu, převod může být úspěšný, pokud splňuje požadavky vašeho CType
. Viz Postupy: Definování operátoru převodu.
Provedení explicitního převodu se také označuje jako přetypování výrazu na daný datový typ nebo třídu objektu.