Auf Englisch lesen

Freigeben über


Für den '<typeparametername1>'-Typparameter von '<genericproceduresignature>' war kein Rückschluss auf ein Typargument möglich

Für den Typparameter '<typeparametername1>' von '<genericproceduresignature>' war kein Rückschluss auf ein Typargument möglich Das Typargument, das per Rückschluss von dem an den '<parametername1>' -Parameter übergebenen Argument abgeleitet wurde, verursacht einen Konflikt mit dem Typargument, das per Rückschluss von dem an den '<parametername1>'-Parameter übergebenen Argument abgeleitet wurde.

Eine generische Prozedur wird ohne Typargumente aufgerufen, und durch den Versuch, den Typ abzuleiten, wurde eine Datentypkonflikt zwischen den Typparametern verursacht.

Wenn Sie eine generische Prozedur aufrufen, geben Sie in der Regel für jeden Typparameter, der durch die generische Prozedur definiert wird, ein Typargument an. Wenn Sie keine Typargumente angeben, versucht der Compiler, die an die Typparameter zu übergebenden Typen abzuleiten. Wenn durch den Kontext des Aufrufs Datentypinformationen für einen Typparameter bereitgestellt werden, die einen Konflikt verursachen, schlägt der Typrückschluss fehl.

Dieser Fehler kann durch folgenden Code generiert werden.

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

Weil der Compiler aufgrund des ersten Arguments Integer für den Typparameter tableitet, aber aufgrund des zweiten Arguments für denselben Typparameter Double ableitet, entsteht ein Konflikt in Bezug auf den an tzu übergebenden Datentyp.

Fehler-ID: BC32116

So beheben Sie diesen Fehler

  • Geben Sie Typargumente für den generischen Typ an, damit der Compiler sie nicht ableiten muss.

    Call takeTwoValues(Of Double)(4, 2.5)  
    

    Beachten Sie, dass in diesem Fall, in dem zwei normale Argumente unterschiedliche Datentypen aufweisen, der aufrufende Code ein Typargument übergeben muss, das den Anforderungen dieser beiden Datentypen entspricht. In diesem Fall wird Integer zu Doubleerweitert.

    Oder

  • Definieren Sie die generische Prozedur neu, indem Sie für die normalen Parameter unterschiedliche Typparameter angeben, sodass beim Ableiten der Typen kein Konflikt entsteht.

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

Siehe auch