更新:2007 年 11 月
错误消息
对“<genericproceduresignature>”的类型参数“<typeparametername1>”所做的类型参数推理失败。从传递给参数“<parametername1>”的变量推理出的类型变量与从传递给参数“<parametername2>”的变量推理出的类型变量冲突。
未使用任何类型变量即调用了泛型过程,并且尝试进行的类型推理在类型参数之间产生了数据类型冲突。
通常,在调用某个泛型过程时,您将为该泛型过程定义的每个类型参数提供一个类型变量。如果未提供任何类型变量,编译器将尝试推理要传递给类型参数的类型。如果调用的上下文为类型参数提供了冲突的数据类型信息,则类型推理将失败。
以下代码可能会产生此错误。
Public Sub takeTwoValues(Of t)(ByVal x As t, ByVal y As t)
End Sub
Call takeTwoValues(4, 2.5)
由于第一个变量会让编译器为类型参数 t 推理出 Integer,而第二个变量会让编译器为同一类型参数推理出 Double,因此在传递给 t 的数据类型上存在冲突。
**错误 ID:**BC32116
更正此错误
为泛型类型提供类型变量,这样编译器将不必推理它们。
Call takeTwoValues(Of Double)(4, 2.5)请注意,在本例中(两个普通变量采用不同的数据类型),调用代码必须传递可同时适应这两种数据类型的类型变量。在本例中,Integer 拓宽为 Double。
- 或 -
重新定义泛型过程,以便为普通参数指定不同的类型参数,这样在推理类型时将不会出现冲突。
Public Sub takeTwoValues(Of t1, t2)(ByVal x As t1, ByVal y As t2)