VB.net Überschreibbare Eigenschaft nicht dasselbe wie c# Virtuelles Eigentum?

Sowie seine einfache, hier hast du meine vb.net code:

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

- Und hier kommt der c# - code:

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);
    }
}

hab ich expekt Ihnen das gleiche zu tun, aber ratet mal, was thay dont!
C# - Ausgabe

Class2

Class2

VB.NET Ausgabe

Class2

{Nichts}

(Es dosent nichts drucken, es druckt nur eine leere Zeile)
Warum vb.net gehen Sie für die Implementierung der Basisklasse auf, wenn seine überschrieben?

InformationsquelleAutor Peter | 2009-11-26
Schreibe einen Kommentar