title: VB.net Overridable property not same as c# Virtual property?
body: <p>Well its simple here you have my vb.net code:</p>
  
  <pre><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
  </code></pre>
  
  <p>And here comes the c# code:</p>
  
  <pre><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);
      }
  }
  </code></pre>
  
  <p>i did expekt them to do the same thing but guess what thay dont!
  C# Output</p>
  
  <p>Class2</p>
  
  <p>Class2</p>
  
  <p>VB.NET output</p>
  
  <p>Class2</p>
  
  <p>{Nothing}</p>
  
  <p>(It dosent print nothing it just prints an empty line)
  Why does vb.net go for the base class implementation when its overriden?</p>