Udostępnij za pośrednictwem


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 LongIntegerna wartość , podczas gdy przełącznik sprawdzania typów (opcja ściślej instrukcji) jest ustawiony na Onwartość .

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

  1. 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.

  2. 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ę.

  3. 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.

  4. 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>.

  5. 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).

  6. 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.

Zobacz też