Option Strict On 禁止从“type1>”<到“type2>”<的隐式转换

您尝试将类型转换为另一种类型,这些类型可能无法包含值,如 a LongInteger,而类型检查开关(Option Strict Statement)设置为 On

这种类型的 转换称为缩小转换,在运行时可能会失败。 因此, Option Strict On 禁止隐式缩小转换。

错误 ID: BC30512

更正此错误

  1. 确定是否存在从 <type1> 任何类型的转换到 <type2>。 如果两者都是 Visual Basic 基本类型,或者两者都是类的实例,则通常可以通过在 “扩大和缩小转换”中咨询表来做出此决定。

  2. 如果只有收缩转换存在 <type1><type2>则应使用显式强制转换。 如果转换失败, CType 函数DirectCast 运算符 关键字将引发运行时异常。 TryCast 运算符关键字仅适用于引用类型,如果转换失败,则返回 Nothing

  3. 如果存在缩小转换,并且程序可以容忍运行时失败,或者确信运行时失败是不可能的,则可以在源代码的开头指定 Option Strict Off 。 但是,你仍应在 Try... 中将转换括起来 ...抓住。。。最后,语句 阻止以避免意外的结果或提前终止程序。

  4. 如果不存在从 <type1> 中转换到 <type2>的转换,则必须重新评估程序逻辑。 可以编写代码,这些代码可将值赋给 <type2> 与预期值相对应的值 <type1>

  5. 如果不存在从 <type1> 类型到 <type2> 其他类型的转换,并且其中一种类型是定义的类或结构,则可能能够定义从该类型的转换运算符到另一种类型。 有关详细信息,请参阅 “如何:定义转换运算符”。

  6. 在所有情况下,作为一般准则,应避免使用缩小转换,除非可以在块中 Catch 捕获故障并有效地处理故障。

另请参阅