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
Исправление этой ошибки
Определите, существует ли преобразование какого-либо типа из <type1> в <type2>. Если оба типа являются простейшими типами Visual Basic или если оба типа являются экземплярами классов, обычно это можно определить, обратившись к таблице Расширяющие и сужающие преобразования.
Если существует только сужающее преобразование из <type1> в <type2>, необходимо использовать явное приведение. Ключевые слова Функция CType и DirectCast вызывают исключение времени выполнения, если происходит сбой преобразования. Ключевое слово TryCast применяется только к типам ссылок и возвращает Nothing (Visual Basic), если происходит сбой преобразования.
Если существует сужающее преобразование и программа может допускать сбой во время выполнения, а вы уверены, что ошибка времени выполнения невозможна, можно указать Option Strict Off в начале исходного кода. Но все же следует заключить преобразование в блок Оператор Try... Catch... Finally (Visual Basic), чтобы избежать непредвиденных результатов или преждевременного завершения программы.
Если преобразование из <type1> в <type2> отсутствует, вы должны пересмотреть логику программы. Можно написать код, который может назначить соответствующие значения <type2> ожидаемым значениям <type1>.
Если не существует преобразования из <type1> в <type2> и один из типов является классом или структурой, которую вы определили, вы можете иметь возможность определения оператора преобразования из этого типа или из другого типа. Дополнительные сведения см. в разделе Практическое руководство. Определение оператора преобразования.
Во всех случаях и в качестве общего правила следует избегать использования сужающих преобразований за исключением случая, когда можно отловить сбои в блоке Catch и эффективно работать с ними.
См. также
Задачи
Практическое руководство. Определение оператора преобразования
Основные понятия
Расширяющие и сужающие преобразования