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


Option Strict On запрещает неявные преобразования от типа <тип1> к типу <тип2>

Обновлен: Ноябрь 2007

Option Strict On disallows implicit conversions from '<type1>' to '<type2>'

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

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

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

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

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

  2. Если существует только сужающее преобразование из <type1> в <type2>, необходимо использовать явное приведение. Ключевые слова Функция CType и DirectCast вызывают исключение времени выполнения, если происходит сбой преобразования. Ключевое слово TryCast применяется только к типам ссылок и возвращает Nothing (Visual Basic), если происходит сбой преобразования.

  3. Если существует сужающее преобразование и программа может допускать сбой во время выполнения, а вы уверены, что ошибка времени выполнения невозможна, можно указать Option Strict Off в начале исходного кода. Но все же следует заключить преобразование в блок Оператор Try... Catch... Finally (Visual Basic), чтобы избежать непредвиденных результатов или преждевременного завершения программы.

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

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

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

См. также

Задачи

Практическое руководство. Определение оператора преобразования

Основные понятия

Расширяющие и сужающие преобразования

Ссылки

Оператор Option Strict

Функция CType

DirectCast

TryCast

Nothing (Visual Basic)

Оператор Try... Catch... Finally (Visual Basic)