Option Strict On запрещает неявные преобразования из type1<> в< type2>
Предпринята попытка преобразовать тип в другой тип, который не может содержать это значение, например Long
в Integer
, а параметр проверки типа (Option Strict Statement) имеет значение On
.
Этот тип преобразования называется сужающим преобразованием, и во время выполнения может произойти его сбой. По этой причине Option Strict On
запрещает неявные сужающие преобразования.
Идентификатор ошибки: BC30512
Исправление ошибки
Определите, существует ли преобразование любого типа из
<type1>
в<type2>
. Если оба являются начальными типами Visual Basic или оба являются экземплярами классов, обычно это можно сделать, проконсультируя таблицу в расширенных и сужающих преобразованиях.Если существует только сужающее преобразование из
<type1>
в<type2>
, следует использовать явное приведение типов. Функция CType и оператор DirectCast ключевое слово вызывает исключение во время выполнения, если преобразование завершается ошибкой. Оператор TryCast ключевое слово применяется только к ссылочным типам и возвращает ничего, если преобразование завершается ошибкой.Если существует сужающее преобразование, и ваша программа может допускать сбой во время выполнения, или вы уверены, что ошибка времени выполнения невозможна, можно указать
Option Strict Off
в начале исходного кода. Но вы по-прежнему должны заключать преобразование в пробную попытку ... Поймать... Наконец, блок инструкции , чтобы избежать непредвиденных результатов или досрочного завершения программы.Если не существует никакого преобразования из
<type1>
в<type2>
, вы должны пересмотреть логику программы. Вы могли бы написать код, который может назначать<type2>
значения, соответствующие ожидаемым значениям<type1>
.Если не существует преобразования из
<type1>
в<type2>
, и один из типов является определенным вами классом или структурой, можно определить оператор преобразования из этого типа или из другого типа. Дополнительные сведения см. в разделе How to: Define a Conversion Operator.Во всех случаях и в качестве общей рекомендации следует избегать сужающих преобразований, если вы не можете отлавливать сбои в блоке
Catch
и эффективно работать с ними.