Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A fordító egy túlterhelt tulajdonságra vagy eljárásra mutató hivatkozást próbál feloldani, de a hivatkozás meghiúsul, mert egy argumentum típusa Object és a hivatkozó objektum adattípusa egy interfész. Az Object argumentum kényszeríti a fordítót a hivatkozás késői kötésűként való feloldására.
Ilyen körülmények között a fordító a túlterhelést a implementálási osztályon keresztül oldja fel a mögöttes interfész helyett. Ha az osztály átnevezi az egyik túlterhelt verziót, a fordító nem tekinti túlterhelésnek ezt a verziót, mert a neve eltérő. Ez azt eredményezi, hogy a fordító figyelmen kívül hagyja az átnevezett verziót, ha lehetséges, hogy a megfelelő választás volt a hivatkozás feloldásához.
Hibaazonosító: BC30933
A hiba kijavítása
Az
CTypeargumentumot a meghívni kívánt túlterhelés aláírása által megadott típusraObjectadhatja le.Vegye figyelembe, hogy ez nem segít a hivatkozó objektumnak az alapul szolgáló felületre történő átküldésében. A hiba elkerülése érdekében le kell írnia az argumentumot.
példa
Az alábbi példa egy túlterhelt Sub eljárás hívását mutatja be, amely fordításkor okozza ezt a hibát.
Module m1
Interface i1
Sub s1(ByVal p1 As Integer)
Sub s1(ByVal p1 As Double)
End Interface
Class c1
Implements i1
Public Overloads Sub s1(ByVal p1 As Integer) Implements i1.s1
End Sub
Public Overloads Sub s2(ByVal p1 As Double) Implements i1.s1
End Sub
End Class
Sub Main()
Dim refer As i1 = New c1
Dim o1 As Object = 3.1415
' The following reference is INVALID and causes a compiler error.
refer.s1(o1)
End Sub
End Module
Az előző példában, ha a fordító engedélyezte, hogy s1 a hívás meg legyen írva, a feloldás az osztályon c1 keresztül történik a felület i1helyett. Ez azt jelentené, hogy a fordító nem veszi figyelembe s2 , mert a neve eltér c1annak ellenére, hogy ez a helyes választás a megadott módon i1.
A hibát a következő kódsorok egyikére módosíthatja:
refer.s1(CType(o1, Integer))
refer.s1(CType(o1, Double))
Az előző kódsorok mindegyike explicit módon a túlterhelésekhez Object definiált paramétertípusok egyikére öntötte a változót o1 .