繁体   English   中英

VB.net可重写属性与c#虚拟属性不同?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM