由于类型“<typename1>”不能转换为类型“<typename2>”,因此无法将“ByRef”参数“<parametername>”的值复制回匹配的参数

更新:2007 年 11 月

声明过程的参数类型无法被转换回调用变量类型。

定义类或结构时,可以定义一个或多个转换运算符,将该类或结构类型转换为其他类型,也可以定义反向转换运算符,将其他类型转换回类或结构类型。在过程调用中使用类或结构类型时,Visual Basic 可以使用转换运算符将变量的类型转换为其对应参数的类型。

如果传递变量 ByRef,Visual Basic 有时会将变量值复制到过程的局部变量中,而是不传递引用。在这种情况下,当过程返回时,Visual Basic 必须随后将局部变量值复制回调用代码中的变量。

如果 ByRef 变量值被复制到过程中,而且该变量和参数为同一类型,则不需要进行转换。但是,如果类型不同,Visual Basic 就必须进行双向转换。如果类型当中有一种是您的类或结构类型,Visual Basic 就必须在该类型与其他类型之间进行双向转换。这意味着您必须定义两个方向的转换操作数。

**错误 ID:**BC33037

更正此错误

  • 如果可能,请使用与过程参数同类型的调用变量,这样 Visual Basic 就不需要进行任何转换。

  • 如果需要调用变量类型与参数类型不同的过程,但不需要将值返回到调用变量中,请将参数定义为 ByVal 而不是 ByRef。

  • 如果需要将值返回到调用变量中,则可定义反向转换操作数,以便 Visual Basic 可以转换回调用变量类型。

请参见

任务

如何:定义运算符

如何:定义转换运算符

概念

Visual Basic 中的过程

过程参数和变量

通过值和通过引用传递参数

运算符过程

参考

Operator 语句