Nie można wywnioskować parametru typu "<typeparametername>" dla "<genericprocedurename>"

Procedura ogólna jest wywoływana bez podawania listy argumentów typu, a wnioskowanie typu kończy się niepowodzeniem dla jednego z argumentów typu.

Podczas wywoływania procedury ogólnej zwykle należy podać argument typu dla każdego parametru typu zdefiniowanego przez procedurę. Jednak alternatywą jest całkowite pominięcie listy argumentów typu. Gdy to zrobisz, kompilator próbuje wywnioskować typ każdego argumentu typu z kontekstu wywołania. Aby uzyskać więcej informacji, zobacz "Wnioskowanie typu" w obszarze Ogólne procedury w Visual Basic.

Jedną z możliwych przyczyn niepowodzenia wnioskowania typu jest niezgodność rangi między parametrem typu a typem wywołującym. Ilustruje to poniższy kod.

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  

W poprzednim kodzie dwa wywołania obu findLargest wywołują ten błąd, ponieważ parametr t typu wywołuje tablicę jednowymiarową, podczas gdy argumenty typu kompilatora wnioskowane z wywołań są skalarną (testValue) i dwuwymiarową tablicą (testMatrix).

Identyfikator błędu: BC32050

Aby poprawić ten błąd

  • Upewnij się, że typy argumentów normalnych są takie, że wnioskowanie typu jest zgodne z parametrami typu zadeklarowanymi dla procedury ogólnej.

    — lub —

  • Wywołaj procedurę ogólną z pełną listą argumentów typu, aby wnioskowanie typu nie było konieczne.

Zobacz też