Le paramètre de type '<NomParamètreDeType>' pour '<NomProcédureGénérique>' ne peut pas être inféré
Mise à jour : novembre 2007
Type parameter '<typeparametername>' for '<genericprocedurename>' cannot be inferred
Une procédure générique est appelée sans fournir une liste d'arguments de type, et l'inférence du type échoue pour l'un des arguments de type.
Lorsque vous appelez une procédure générique, vous fournissez normalement un argument de type pour chaque paramètre de type défini par la procédure. Toutefois, vous avez la possibilité d'omettre totalement la liste d'arguments de type. Si vous le faites, le compilateur essaie de déduire le type de chaque argument de type à partir du contexte de votre appel. Pour plus d'informations, consultez « Inférence du type » dans Procédures génériques dans Visual Basic.
Une incompatibilité de rang entre un paramètre de type et le type appelant peut expliquer l'échec de l'inférence du type. Le code suivant illustre ce comportement :
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
Dans le code précédent, les deux appels à findLargest produisent cette erreur, parce que le paramètre de type t fait appel à un tableau unidimensionnel, alors que les arguments de type que le compilateur déduit à partir des appels représentent un tableau scalaire (testValue) et en deux dimensions (testMatrix).
ID d'erreur : BC32050
Pour corriger cette erreur
Vérifiez que les types des arguments normaux se présentent de telle sorte que l'inférence du type soit cohérente par rapport aux paramètres de type déclarés pour la procédure générique.
- ou -
Appelez la procédure générique avec une liste d'arguments de type complète pour que l'inférence du type ne soit pas nécessaire.
Voir aussi
Concepts
Types génériques en Visual Basic
Procédures génériques dans Visual Basic