【发布时间】:2011-01-03 01:18:30
【问题描述】:
我有以下代码编译没有问题。当然,在执行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
【问题讨论】:
-
我看不到它是如何编译的?我错过了什么吗?
-
这真的编译没有问题吗?我认为“GetThing_C”不会编译,因为它试图将 ClassA 实例作为 IDoThingsC 接口返回,但它没有实现。
-
我就是这么想的。它在 Visual Studio 2005 和 Visual Studio 2010 Beta 2 中编译。
标签: vb.net interface strong-typing