Der „<Typparametername>“-Typparameter für „<Generischer_Prozedurname>“ kann nicht abgeleitet werden.

Eine generische Prozedur wird ohne Angabe einer Liste der Typargumente aufgerufen, und der Typrückschluss schlägt für eines der Typargumente fehl.

Wenn Sie eine generische Prozedur aufrufen, geben Sie normalerweise für jeden Typparameter, der von der Prozedur definiert wird, ein Typargument ein. Alternativ können Sie vollständig auf die Liste der Typargumente verzichten. Dann versucht der Compiler, aus dem Kontext des Aufrufs Rückschlüsse auf den Typ der einzelnen Typargumente zu ziehen. Weitere Informationen finden Sie unter „Typrückschluss“ in Generic Procedures in Visual Basic.

Eine mögliche Fehlerursache beim Typrückschluss ist ein Rangfolgekonflikt zwischen einem Typparameter und dem aufrufenden Typ. Dies wird im folgenden Code veranschaulicht.

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  

Im vorherigen Code erzeugen die beiden Aufrufe von findLargest diesen Fehler, da der Typparameter t ein eindimensionales Array erfordert, während die vom Compiler aus den Aufrufen abgeleiteten Typargumente ein Skalar (testValue) und ein zweidimensionales Array (testMatrix) sind.

Fehler-ID: BC32050

So beheben Sie diesen Fehler

  • Stellen Sie sicher, dass die Typen der normalen Argumente dazu führen, dass der Typrückschluss konsistent mit den für die generische Prozedur deklarierten Typparametern ist.

    Oder

  • Rufen Sie die generische Prozedur mit einer vollständigen Liste der Typargumente auf, sodass ein Typrückschluss nicht erforderlich ist.

Siehe auch