Opcja Ściśle włączone nie zezwala na niejawne konwersje z "<type1>" na "<type2>"
Podjęto próbę przekonwertowania typu na inny typ, który może nie być w stanie zawierać wartości, na przykład Long
Integer
na wartość , podczas gdy przełącznik sprawdzania typów (opcja ściślej instrukcji) jest ustawiony na On
wartość .
Ten typ konwersji jest nazywany konwersją zawężającą i może zakończyć się niepowodzeniem w czasie wykonywania. Z tego powodu Option Strict On
nie zezwala na niejawne konwersje zawężania.
Identyfikator błędu: BC30512
Aby poprawić ten błąd
Ustal, czy istnieje konwersja dowolnego typu z
<type1>
na<type2>
. Jeśli oba są typami podstawowymi języka Visual Basic lub oba są wystąpieniami klas, zwykle można to określić, korzystając z tabeli w temacie Rozszerzanie i zawężanie konwersji.Jeśli istnieje tylko konwersja zawężania z
<type1>
do<type2>
, należy użyć jawnego rzutowania. Słowa kluczowe funkcji CType i operatora directcast zgłaszają wyjątek czasu wykonywania, jeśli konwersja nie powiedzie się. Słowo kluczowe TryCast Operator dotyczy tylko typów odwołań i zwraca wartość Nic , jeśli konwersja nie powiedzie się.Jeśli istnieje konwersja zawężania i program może tolerować awarię czasu wykonywania lub masz pewność, że niepowodzenie w czasie wykonywania nie jest możliwe, możesz określić
Option Strict Off
na początku kodu źródłowego. Ale nadal należy ująć konwersję w try... Złapać... Na koniec blok instrukcji , aby uniknąć nieoczekiwanych wyników lub wczesnego zakończenia programu.Jeśli nie istnieje konwersja z
<type1>
do<type2>
, musisz ponownie ocenić logikę programu. Może być możliwe napisanie kodu, który może przypisywać wartości do<type2>
odpowiadających przewidywanym wartościom<type1>
.Jeśli żadna konwersja nie istnieje od
<type1>
do<type2>
i jeden z typów jest zdefiniowaną klasą lub strukturą, może być możliwe zdefiniowanie operatora konwersji z tego typu do lub z innego typu. Aby uzyskać więcej informacji, zobacz How to: Define a Conversion Operator (Instrukcje: definiowanie operatora konwersji).We wszystkich przypadkach i jako ogólne wytyczne należy unikać używania konwersji zawężania, chyba że można wychwytywać błędy w
Catch
bloku i skutecznie radzić sobie z nimi.