Freigeben über


<Typparametername>-Typparameter für '<Name der generischen Prozedur>' kann nicht per Rückschluss abgeleitet werden

Aktualisiert: November 2007

Type parameter '<typeparametername>' for '<genericprocedurename>' cannot be inferred

Eine generische Prozedur wird ohne Angabe einer Typargumentliste aufgerufen, und die Typableitung schlägt für eines der Typargumente fehl.

Wenn Sie eine generische Prozedur aufrufen, geben Sie i. d. R. für jeden Typparameter, der durch die Prozedur definiert wird, ein Typargument an. Sie können jedoch auch die Typargumentliste vollständig auslassen. In diesem Fall versucht der Compiler, den Typ jedes Typarguments aus dem Kontext des Aufrufs abzuleiten. Weitere Informationen finden Sie in Generische Prozeduren in Visual Basic unter "Typableitung".

Eine mögliche Ursache einer fehlgeschlagenen Typableitung sind unterschiedliche Ränge eines Typparameters und des aufrufenden Typs. 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

In obigem Code lösen beide Aufrufe von findLargest diesen Fehler aus, weil der Typparameter t ein eindimensionales Array erfordert, während die vom Compiler aus den Aufrufen abgeleiteten Typargumente ein Skalarwert (testValue) und ein zweidimensionales Array (testMatrix) sind.

Fehler-ID: BC32050

So beheben Sie diesen Fehler

  • Stellen Sie sicher, dass die Typen der normalen Argumente eine Typableitung ermöglichen, die mit den für die generische Prozedur deklarierten Typparametern übereinstimmt.

    – oder –

  • Rufen Sie die generische Prozedur mit einer vollständigen Typargumentliste auf, sodass keine Typableitung erforderlich ist.

Siehe auch

Konzepte

Generische Typen in Visual Basic

Generische Prozeduren in Visual Basic

Referenz

Typenliste