<genericprocedurename>' の型パラメータ '<typeparametername>' を推論できません。
更新 : 2007 年 11 月
型引数リストを指定せずにジェネリック プロシージャを呼び出しており、いずれかの型引数についての型推論が失敗しました。
ジェネリック プロシージャを呼び出すときには、通常は、そのプロシージャで定義されている個々の型パラメータに対して型引数を指定します。しかし、別の方法として、型引数リストをすべて省略することもできます。その場合は、コンパイラが個々の型引数の型を呼び出しのコンテキストに基づいて推論しようとします。詳細については、「Visual Basic におけるジェネリック プロシージャ」の「型の推定」を参照してください。
型推論が失敗する一因として考えられるのは、型パラメータと呼び出し元の型とのランクの不一致です。次に例を示します。
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
このコードでは、findLargest に対する 2 つの呼び出しがどちらもこのエラーを引き起こします。型パラメータ t は 1 次元の配列を要求しているのに、コンパイラがこの 2 つの呼び出しから推論する型引数はスカラ (testValue) と 2 次元配列 (testMatrix) であるからです。
Error ID: BC32050
このエラーを解決するには
通常の引数の型を、型推論の結果がジェネリック プロシージャで宣言されている型パラメータと一致するように指定します。
または
ジェネリック プロシージャを呼び出すときに完全な型引数リストを指定して、型推論が不要になるようにします。
参照
概念
Visual Basic におけるジェネリック プロシージャ