Не удалось определить тип аргумента для параметра типа <имяПараметраТипа> в <сигнатураУниверсальнойПроцедуры>
Обновлен: Ноябрь 2007
Сообщение об ошибке
Вывод аргумента типа не удался для параметра типа <typeparametername> <genericproceduresignature>. Аргумент типа не может быть получен из аргумента, переданного параметру <имя_параметра>.
Type argument inference failed for type parameter '<typeparametername>' of '<genericproceduresignature>'. Type argument could not be inferred from the argument passed to parameter '<parametername>'.
Универсальная процедура вызывается без передачи каких-либо аргументов типа, и компилятор не может вывести тип для передачи одному из параметров.
Как правило, при вызове универсальной процедуры, указывается тип аргумента для каждого параметра типа, определяемого этой универсальной процедурой. Если никакие аргументы типа не передаются, компилятор пытается вывести типы, которые должны быть переданы параметрам типов. Если контекст вызова предоставляет сведения о конфликтующих типах данных для параметра типа, вывод типа будет неудачным.
Данная ошибка может быть вызвана следующим кодом.
Public Sub doSomething(Of t)(ByVal arg1 As t(), ByVal arg2 As t)
End Sub
Call doSomething(6, 42)
В предыдущем примере компилятор выводит тип Integer для t на основе значения 42, передаваемого в arg2. Однако, для этого вывода требуется, чтобы аргумент arg1 относился к типу Integer() (то есть массив должен относиться к типу Integer), а значение 6, передаваемое в arg1, не соответствуют этому типу.
Идентификатор ошибки: BC32051
Чтобы исправить данную ошибку
Укажите аргументы типов для универсальной процедуры, чтобы компилятору не приходилось выводить их.
Укажите обычные аргументы с типами, которые совпадают с этими аргументами типов.
См. также
Основные понятия
Универсальные типы в Visual Basic
Универсальные процедуры в Visual Basic