AddressOf в базовом классе - PullRequest
       0

AddressOf в базовом классе

2 голосов
/ 16 марта 2011

При обращении к адресу метода мы должны учитывать переопределение или нет?

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

Ответы [ 2 ]

3 голосов
/ 16 марта 2011

Будет напечатано 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
2 голосов
/ 16 марта 2011

Я полагаю, что PFoo будет ссылаться на Foo, который переопределен в наследующем классе, если PFoo вызывается в экземпляре / объекте наследуемого класса B.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...