Поделиться через


Option Strict On запрещает неявные преобразования из type1<> в< type2>

Предпринята попытка преобразовать тип в другой тип, который не может содержать это значение, например Long в Integer, а параметр проверки типа (Option Strict Statement) имеет значение On.

Этот тип преобразования называется сужающим преобразованием, и во время выполнения может произойти его сбой. По этой причине Option Strict On запрещает неявные сужающие преобразования.

Идентификатор ошибки: BC30512

Исправление ошибки

  1. Определите, существует ли преобразование любого типа из <type1> в <type2>. Если оба являются начальными типами Visual Basic или оба являются экземплярами классов, обычно это можно сделать, проконсультируя таблицу в расширенных и сужающих преобразованиях.

  2. Если существует только сужающее преобразование из <type1> в <type2>, следует использовать явное приведение типов. Функция CType и оператор DirectCast ключевое слово вызывает исключение во время выполнения, если преобразование завершается ошибкой. Оператор TryCast ключевое слово применяется только к ссылочным типам и возвращает ничего, если преобразование завершается ошибкой.

  3. Если существует сужающее преобразование, и ваша программа может допускать сбой во время выполнения, или вы уверены, что ошибка времени выполнения невозможна, можно указать Option Strict Off в начале исходного кода. Но вы по-прежнему должны заключать преобразование в пробную попытку ... Поймать... Наконец, блок инструкции , чтобы избежать непредвиденных результатов или досрочного завершения программы.

  4. Если не существует никакого преобразования из <type1> в <type2>, вы должны пересмотреть логику программы. Вы могли бы написать код, который может назначать <type2> значения, соответствующие ожидаемым значениям <type1>.

  5. Если не существует преобразования из <type1> в <type2> , и один из типов является определенным вами классом или структурой, можно определить оператор преобразования из этого типа или из другого типа. Дополнительные сведения см. в разделе How to: Define a Conversion Operator.

  6. Во всех случаях и в качестве общей рекомендации следует избегать сужающих преобразований, если вы не можете отлавливать сбои в блоке Catch и эффективно работать с ними.

См. также