Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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.