由于类型“<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 可以转换回调用变量类型。