<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