无法推断“<genericprocedurename>”的类型参数“<typeparametername>”

更新:2007 年 11 月

在没有提供类型参数列表的情况下调用泛型过程,并且对于这些类型参数之一,类型推理失败。

在调用泛型过程时,通常为过程所定义的每个类型参数都提供一个类型变量。不过,您还可以选择忽略整个类型参数列表。在您这样做时,编译器会尝试根据调用的上下文,推导每个类型参数的类型。有关更多信息,请参见 Visual Basic 中的泛型过程中的“类型推理”。

类型推理失败的一个可能原因是类型参数与调用类型之间的秩不匹配。下面的代码阐释这一点。

Public Sub displayLargest(Of t As IComparable)(ByVal arg() As t)
    ' Insert code to find and display the largest element of arg().
End Sub
Public Sub callGenericSub()
    Dim testValue As Integer
    findLargest(testValue)
    Dim testMatrix(,) As Integer
    findLargest(testMatrix)
End Sub

在前面的示例中,对 findLargest 的两个调用都生成此错误,因为类型参数 t 调用一维数组,而编译器从这些调用推导出的类型参数是标量 (testValue) 和二维数组 (testMatrix)。

**错误 ID:**BC32050

更正此错误

  • 确保采用普通变量类型,以便类型推理与为泛型过程声明的类型参数一致。

    - 或 -

  • 使用完整的类型参数列表调用泛型过程,因此就不需要类型推理。

请参见

概念

Visual Basic 中的泛型类型

Visual Basic 中的泛型过程

参考

类型列表