title: Why can't Interface ReadOnly properties be overridden in VB.NET, when it is valid in C#.NET?
body: <p>(this is related to <a href="https://stackoverflow.com/questions/6307335/if-an-interface-defines-a-readonly-property-how-can-an-implementer-provide-the-s">this other question</a>)</p>
  
  <p>If you define an Interface where there is a Property with only a getter (= ReadOnly in VB.NET), <strong>why can you define the setter in implementing classes with C# but not with VB</strong> ?</p>
  
  <p>I would have thought it was defined at .NET level, and not language-specific.</p>
  
  <p>Example: for this interface </p>
  
  <pre><code>'VB.NET
  Interface SomeInterface
  
      'the interface only say that implementers must provide a value for reading
      ReadOnly Property PublicProperty As String
  
  End Interface
  </code></pre>
  
  <p>or </p>
  
  <pre><code>//C# code
  interface IPublicProperty
  {
      string PublicProperty { get; }
  }
  </code></pre>
  
  <p>This is a correct implementation in C# :</p>
  
  <pre><code>public class Implementer:IPublicProperty
      {
          private string _publicProperty;
  
          public string PublicProperty
          {
              get
              {
                  return _publicProperty;
              }
              set
              {
                  _publicProperty = value;
              }
          }
      }
  </code></pre>
  
  <p>But this is invalid in VB.NET</p>
  
  <pre><code>Public Property PublicProperty As String Implements SomeInterface.PublicProperty
      Get
          Return _myProperty
      End Get
      Set(ByVal value As String)
          _myProperty = value
      End Set
  End Property
  </code></pre>
  
  <hr>
  
  <p><strong>UPDATE 2015/04/23</strong></p>
  
  <p>Turns out this feature is coming as part of VB14 !
  See <a href="https://github.com/dotnet/roslyn/wiki/Languages-features-in-C%23-6-and-VB-14" rel="nofollow noreferrer">Languages features in C# 6 and VB 14</a> and <a href="http://roslyn.codeplex.com/discussions/571884" rel="nofollow noreferrer">New Language Features in Visual Basic 14</a> :</p>
  
  <blockquote>
    <p>ReadOnly interface properties can be implemented by ReadWrite props
    This cleans up a quirky corner of the language. Look at this example:</p>
  
  <pre><code>Interface I
      ReadOnly Property P As Integer
  End Interface
  
  
  Class C : Implements I
      Public Property P As Integer Implements I.P
  End Class
  </code></pre>
    
    <p>Previously, if you were implementing the ReadOnly property I.P, then
    you had to implement it with a ReadOnly property as well. Now that
    restriction has been relaxed: you can implement it with a read/write
    property if you want. This example happens to implement it with a
    read/write autoprop, but you can also use a property with getter and
    setter.</p>
  </blockquote>