当引用一个方法的地址时,我们是否应该考虑重写?
Class B
Inherits A
Overrides Sub Foo
Console.WriteLine("B")
End Sub
End Class
Class A
Public Sub PFoo
... AddressOf Foo ... ' WHAT WILL DO THIS METHOD??? '
End
Protected Overridable Sub Foo()
Console.WriteLine("A")
End Sub
End Class发布于 2011-03-16 23:21:23
它将打印B。要使您的意图更明显,您可以将AddressOf Me.Foo。此外,就像一个仅供参考的代码一样,如果您输入MyClass.Foo,它将打印A
Module Module1
Sub Main()
Dim b As B = New B
b.PFoo() ' prints B
Console.ReadLine()
End Sub
End Module
Public Class B
Inherits A
Protected Overrides Sub Foo()
Console.WriteLine("B")
End Sub
End Class
Public Class A
Public Sub PFoo()
Dim f As Action = New Action(AddressOf Me.Foo)
f.Invoke()
End Sub
Protected Overridable Sub Foo()
Console.WriteLine("A")
End Sub
End Class发布于 2011-03-16 23:02:52
如果在继承B类的/object实例中调用PFoo,我相信PFoo将引用在继承类中被覆盖的Foo。
https://stackoverflow.com/questions/5327138
复制相似问题