![](/img/trans.png)
[英]When should a class member be declared virtual (C#)/Overridable (VB.NET)?
[英]VB.net Overridable property not same as c# Virtual property?
好了,这里有我的vb.net代码:
Public Class Class1
Public Overridable ReadOnly Property Name() As String
Get
Return Nothing
End Get
End Property
End Class
Public Class Class2
Inherits Class1
Public Overloads ReadOnly Property Name() As String
Get
Return "Class2"
End Get
End Property
End Class
Module Module1
Sub Main()
Dim c2 As New Class2()
Console.WriteLine(c2.Name)
Dim c1 As Class1 = CType(c2, Class1)
Console.WriteLine(c1.Name)
End Sub
End Module
这是C#代码:
class Class1
{
public virtual string Name
{
get
{
return null;
}
}
}
class Class2 : Class1
{
public override string Name
{
get
{
return "Class2";
}
}
}
class Program
{
static void Main(string[] args)
{
Class2 c2 = new Class2();
Console.WriteLine(c2.Name);
Class1 c1 = (Class1)c2;
Console.WriteLine(c1.Name);
}
}
我确实让他们做同样的事情,但猜猜什么都不做! C#输出
2类
2类
VB.NET输出
2类
{没有}
(它不会打印任何内容,只会打印一个空行)当vb.net被覆盖时,为什么要使用它作为基类实现?
它应该是重写而不是过载吗?
Public Overrides ReadOnly Property Name() As String
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.