BC32053:将“ByRef ”参数“<parametername>”的值复制回匹配自变量将导致从类型“<typenam1>”到“<typename2>”的收缩转换

使用扩展到相应参数类型的自变量调用过程,且从参数到自变量的转换为收缩。

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

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

如果将 ByRef 实参值复制到过程中,并且实参与形参为同一类型,则不必进行转换。 但是,如果类型不同,则必须对 Visual Basic 进行双向转换。 如果其中一个类型是你的类或结构类型,则 Visual Basic 就必须在该类型与其他类型之间进行双向转换。 如果其中一个转换为扩大,则反向转换可能会收缩。

错误 ID: BC32053

更正此错误

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

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

  • 如果需要将值返回到调用参数中,如有可能,则可将反向转换运算符定义为 扩大

另请参阅