JRS*_*JRS 4 vb.net interface strong-typing
我有以下代码编译没有问题.当然,我在执行时遇到了无效的强制转换异常Dim C As IDoThingsC = GetThing_C().我错过了什么吗?您是否希望返回不符合函数返回值的接口要求的对象?
Public Class ClassA
Public Sub DoThings_A()
Debug.Print("Doing A things...")
End Sub
End Class
Public Class ClassB
Implements IDoThingsC
Public Sub DoThings_B()
Debug.Print("Doing B things...")
End Sub
Public Sub DoThings_C() Implements IDoThingsC.DoThings_C
Debug.Print("Doing C things...")
End Sub
End Class
Public Interface IDoThingsC
Sub DoThings_C()
End Interface
Public Class aTest
Public Sub Test()
Dim C As IDoThingsC = GetThing_C()
C.DoThings_C()
End Sub
Public Function GetThing_C() As IDoThingsC
Dim Thing As ClassA = New ClassA
Thing.DoThings_A()
Return Thing
End Function
End Class
Run Code Online (Sandbox Code Playgroud)
Han*_*ant 13
Option Strict On在源代码文件的顶部使用来捕获这样的问题.您将收到编译时错误而不是运行时错误:
error BC30512: Option Strict On disallows implicit conversions from 'ClassA' to 'IDoThingsC'.
Run Code Online (Sandbox Code Playgroud)