我了解如何使用VB的Overridable
和Overrides
,在调用类的方法时获得与c#的virtual
类似的功能。但是,请考虑下面的c#控制台代码,该代码从 类本身调用一个重写方法:
class Program {
static void Main(string[] args) {
new test();
new test2();
Console.ReadKey();
}
}
public class test {
public test() {
hello();
}
public virtual void hello() {
Console.WriteLine("hello from base method");
}
}
class test2 : test {
public override void hello() {
Console.WriteLine("hello from overridden method");
}
}
我可以预见,在c#中得到的结果是:
你好基础方法
你好,来自重写方法
问题是,我无法弄清楚如何在VB.NET中复制此功能。请注意,hello()
是从基类代码中的调用的,该代码运行重写的方法。这是我在VB中无法实现的目标。
无论我在VB中尝试什么,总是调用基类的 hello(),而不是重写的hello()。
答案 0 :(得分:2)
班级考试:
Public Class Test
Public Sub New()
Hello()
End Sub
Public Overridable Sub Hello()
Console.WriteLine("hello from base method")
End Sub
End Class
Class Test2:
Public Class Test2
Inherits Test
Public Overrides Sub Hello()
Console.WriteLine("hello from overridden method")
End Sub
End Class
Sub Main:
Sub Main()
Dim x As New Test
Dim y As New Test2
End Sub