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


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

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

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

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

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

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

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

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

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

  5. Если преобразование не существует из <type1><type2> и один из типов является классом или структурой, определенной вами, возможно, вы сможете определить оператор преобразования из этого типа в другой или из другого типа. Дополнительные сведения см. в разделе "Практическое руководство. Определение оператора преобразования".

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

См. также