CType – funkce (Visual Basic)

Vrátí výsledek explicitního převodu výrazu na zadaný datový typ, objekt, strukturu, třídu nebo rozhraní.

Syntaxe

CType(expression, typename)

Součástky

expression Libovolný platný výraz. Pokud je hodnota expression mimo rozsah povolený typename, Visual Basic vyvolá výjimku.

typename Libovolný výraz, který je v klauzuli v As klauzuli v Dim příkazu, tj. název libovolného datového typu, objektu, struktury, třídy nebo rozhraní.

Poznámky

Tip

K převodu typů můžete použít také následující funkce:

  • Funkce převodu typů, například CByte, CDbla CInt které provádějí převod na určitý datový typ. Další informace naleznete v tématu Funkce převodu typů.
  • DirectCast – operátor nebo operátor TryCast Tyto operátory vyžadují, aby jeden typ dědil nebo implementovali druhý typ. Můžou poskytovat poněkud lepší výkon než CType při převodu na datový typ a z datového Object typu.

CType je zkompilován vložený, což znamená, že kód převodu je součástí kódu, který vyhodnotí výraz. V některých případech se kód spustí rychleji, protože k provedení převodu nejsou voláné žádné procedury.

Pokud není definován žádný převod z expression do typename (například z Integer do Date), Visual Basic zobrazí chybovou zprávu o době kompilace.

Pokud převod selže za běhu, vyvolá se příslušná výjimka. Pokud zužující převod selže, OverflowException jedná se o nejběžnější výsledek. Pokud převod není definován, vyvolá InvalidCastException se vyvolání. K tomu může dojít například v případě, že expression je typu Object a jeho typ za běhu nemá žádný převod na typename.

Pokud je datový typ expression třídy nebo typename struktury, kterou jste definovali, můžete CType definovat tuto třídu nebo strukturu jako operátor převodu. Jedná se CType o přetížený operátor. Pokud to uděláte, můžete řídit chování převodů do a ze třídy nebo struktury, včetně výjimek, které mohou být vyvolány.

Klíčová slova převodu

Porovnání klíčových slov převodu typů je následující.

Klíčové slovo Datové typy Relace argumentů Selhání za běhu
CType Všechny datové typy Mezi těmito dvěma datovými typy musí být definován rozšiřující nebo zúžený převod. Vyvolá InvalidCastException
Operátor DirectCast Všechny datové typy Jeden typ musí dědit nebo implementovat druhý typ. Vyvolá InvalidCastException
TryCast Pouze odkazové typy Jeden typ musí dědit nebo implementovat druhý typ. Vrátí hodnotu Nothing.

Přetížení

Operátor CType může být také přetížen u třídy nebo struktury definované mimo váš kód. Pokud se váš kód převede na nebo z takové třídy nebo struktury, nezapomeňte pochopit chování jeho CType operátoru. Další informace naleznete v tématu Procedury operátoru.

Převod dynamických objektů

Převody typů dynamických objektů se provádějí uživatelsky definovanými dynamickými převody, které používají TryConvert metody nebo BindConvert metody. Pokud pracujete s dynamickými objekty, použijte metodu CTypeDynamic k převodu dynamického objektu.

Příklad

Následující příklad používá CType funkci k převodu výrazu na Single datový typ.

Dim testNumber As Long = 1000
' The following line of code sets testNewType to 1000.0.
Dim testNewType As Single = CType(testNumber, Single)

Další příklady najdete v tématu Implicitní a explicitní převody.

Viz také