Odvození argumentu typu se nezdařilo pro parametr type '<typeparametername1>' parametru '<genericproceduresignature>'.

Odvození argumentu typu se nezdařilo pro parametr type '<typeparametername1>' parametru '<genericproceduresignature>'. Argument typu odvozený z argumentu předaného parametru parametername1<> je v konfliktu s argumentem typu odvozeným z argumentu předaného parametru parameter '<parametername2>'.

Obecná procedura je volána bez argumentů typu a pokus o odvození typu způsobil konflikt datového typu mezi parametry typu.

Za normálních okolností při volání obecné procedury zadáte argument typu pro každý parametr typu, který obecný procedura definuje. Pokud nezadáte žádné argumenty typu, kompilátor se pokusí odvodit typy, které mají být předány parametrům typu. Pokud kontext volání poskytuje konfliktní informace o datovém typu pro parametr typu, odvození typu selže.

Tuto chybu může vygenerovat následující kód.

Public Sub takeTwoValues(Of t)(ByVal x As t, ByVal y As t)  
End Sub  
Call takeTwoValues(4, 2.5)  

Vzhledem k tomu, že první argument způsobí, že kompilátor odvodí Integer parametr typu t, zatímco druhý argument způsobí, že odvodí Double pro stejný parametr typu, dojde ke konfliktu týkajícího se datového typu, který se má tpředat .

ID chyby: BC32116

Oprava této chyby

  • Do obecného typu zadejte argumenty typu, aby je kompilátor nemusel odvodit.

    Call takeTwoValues(Of Double)(4, 2.5)  
    

    Všimněte si, že v tomto případě, kde jsou dva normální argumenty různých datových typů, musí volající kód předat argument typu, který může pojmout oba tyto datové typy. V tomto případě Integer se rozšiřuje na Double.

    nebo

  • Předefinujte obecný postup pro zadání různých parametrů typu pro normální parametry, aby nedošlo ke konfliktu odvozování typů.

    Public Sub takeTwoValues(Of t1, t2)(ByVal x As t1, ByVal y As t2)  
    

Viz také