Možnost Strict On zakáže implicitní převody z< type1> na< type2>.
Pokusili jste se převést typ na jiný typ, který nemusí být schopen obsahovat hodnotu, například Long
na hodnotu , zatímco přepínač kontroly typů (Příkaz Striktní příkaz option) je nastaven na On
Integer
.
Tento typ převodu se nazývá zužující převod a je možné, že v době běhu selže. Z tohoto důvodu Option Strict On
zakáže implicitní zužování převodů.
ID chyby: BC30512
Oprava této chyby
Určete, zda převod jakéhokoli typu existuje z
<type1>
do<type2>
. Pokud jsou oba základní typy jazyka Visual Basic, nebo pokud jsou obě instance tříd, můžete toto rozhodnutí obvykle provést konzultacem s tabulkou v rozšiřujících a zúžených převodech.Pokud existuje pouze zužující převod z
<type1>
na<type2>
, měli byste použít explicitní přetypování. Klíčová slova CType Function and DirectCast Operator vyvolá výjimku za běhu, pokud převod selže. Klíčové slovo TryCast – operátor se vztahuje pouze na odkazové typy a v případě selhání převodu vrátí hodnotu Nothing.Pokud existuje zužující převod a váš program může tolerovat selhání za běhu nebo máte jistotu, že selhání za běhu není možné, můžete zadat
Option Strict Off
na začátku zdrojového kódu. Ale přesto byste měli převod uzavřít do try... Chytit... Blok příkazu Finally, který zabrání neočekávaným výsledkům nebo předčasnému ukončení programu.Pokud neexistuje žádný převod z
<type1>
na<type2>
, musíte znovu vyhodnotit logiku programu. Možná budete moct napsat kód, který může přiřadit hodnoty<type2>
odpovídajícím očekávaným hodnotám<type1>
.Pokud neexistuje žádný převod z
<type1>
typu do<type2>
a jeden z typů je třída nebo struktura, kterou jste definovali, můžete být schopni definovat operátor převodu z tohoto typu do nebo z druhého typu. Další informace naleznete v tématu Postupy: Definování operátoru převodu.Ve všech případech a jako obecné vodítko byste se měli vyhnout použití zúžení převodů, pokud nemůžete zachytit selhání v
Catch
bloku a efektivně je řešit.