Параметр "optioned on" не разрешает неявные преобразования из " <type1> " в " <type2> "Option Strict On disallows implicit conversions from '<type1>' to '<type2>'

Предпринята попытка преобразовать тип в другой тип, который не может содержать это значение, например Long в Integer, а параметр проверки типа (Option Strict Statement) имеет значение On.You have tried to convert a type to another type that may not be able to contain the value, such as a Long to an Integer, while the type checking switch (Option Strict Statement) is set to On.

Этот тип преобразования называется сужающим преобразованием, и во время выполнения может произойти его сбой.This type of conversion is called a narrowing conversion, and it is possible for it to fail at run time. По этой причине Option Strict On запрещает неявные сужающие преобразования.For this reason, Option Strict On disallows implicit narrowing conversions.

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

Исправление ошибкиTo correct this error

  1. Определите, существует ли преобразование любого типа из <type1> в <type2>.Determine whether a conversion of any type exists from <type1> to <type2>. Если оба типа являются Visual Basic простыми типами, или если оба являются экземплярами классов, то обычно это определение можно сделать, выполнив таблицу в расширяющихся и сужающих преобразованиях.If both are Visual Basic elementary types, or if both are instances of classes, you can usually make this determination by consulting the table in Widening and Narrowing Conversions.

  2. Если существует только сужающее преобразование из <type1> в <type2>, следует использовать явное приведение типов.If only a narrowing conversion exists from <type1> to <type2>, you should use explicit casting. Ключевые слова CType Function и DirectCast вызывают исключение во время выполнения, если преобразование завершается неудачей.The CType Function and DirectCast Operator keywords throw a run-time exception if the conversion fails. Ключевое слово оператора TryCast применяется только к ссылочным типам и не возвращает ничего , если преобразование завершается неудачей.The TryCast Operator keyword applies only to reference types and returns Nothing if the conversion fails.

  3. Если существует сужающее преобразование, и ваша программа может допускать сбой во время выполнения, или вы уверены, что ошибка времени выполнения невозможна, можно указать Option Strict Off в начале исходного кода.If a narrowing conversion exists and your program can tolerate a run-time failure, or you are confident that a run-time failure is not possible, you can specify Option Strict Off at the beginning of your source code. Но вы все равно должны заключать преобразование в try... Перехватить... Finally , чтобы избежать непредвиденных результатов или раннего завершения программы.But you should still enclose the conversion in a Try...Catch...Finally Statement block to avoid unexpected results or early termination of your program.

  4. Если не существует никакого преобразования из <type1> в <type2>, вы должны пересмотреть логику программы.If no conversion exists from <type1> to <type2>, you must re-evaluate your program logic. Вы могли бы написать код, который может назначать <type2> значения, соответствующие ожидаемым значениям <type1>.You might be able to write code that can assign values to <type2> corresponding to anticipated values of <type1>.

  5. Если не существует преобразования из <type1> в <type2> , и один из типов является определенным вами классом или структурой, можно определить оператор преобразования из этого типа или из другого типа.If no conversion exists from <type1> to <type2> and one of the types is a class or structure you have defined, you might be able to define a conversion operator from that type to or from the other type. Дополнительные сведения см. в разделе How to: Define a Conversion Operator.For more information, see How to: Define a Conversion Operator.

  6. Во всех случаях и в качестве общей рекомендации следует избегать сужающих преобразований, если вы не можете отлавливать сбои в блоке Catch и эффективно работать с ними.In all cases and as a general guideline, you should avoid using narrowing conversions unless you can trap failures in a Catch block and deal with them effectively.

См. также разделSee also