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 t
ableitet, aber aufgrund des zweiten Arguments für denselben Typparameter Double
ableitet, entsteht ein Konflikt in Bezug auf den an t
zu übergebenden Datentyp.
Fehler-ID: BC32116
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
zuDouble
erweitert.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)
Feedback zu .NET
.NET ist ein Open Source-Projekt. Wählen Sie einen Link aus, um Feedback zu geben: