title: static/Shared in VB.NET and C# visibility
body: <p>I have faced with a situation in VB.NET and C# (.NET2) with the visibility of the static/shared members. It seems to me a little strange in VB.NET:</p>
  
  <pre><code>    public class A 
      {
          private static A instance;
          public static A Instance 
          {
              get { return instance; }
          }
  
          public string Name { get { } }
      }
  </code></pre>
  
  <p><em>usage</em>:
  <code>A.Instance.Name</code> // <strong>ONLY Name is "visible"</strong></p>
  
  <hr>
  
  <p>VB.NET:</p>
  
  <pre><code>Public Class A
    Private Shared _instance As A
  
    Public Shared ReadOnly Property Instance() As A
      Get
        Return _instance
      End Get
    End Property
  
  
    Public ReadOnly Property Name() As String
      Get
        Return ""
      End Get
    End Property
  
  End Class
  </code></pre>
  
  <p><em>usage</em>:</p>
  
  <pre><code>A.Instance.Instance.Instance.Instance...
  </code></pre>
  
  <p><strong>// shared member behaves like a class public one I can repeat it to infinite..</strong></p>
  
  <p>is this a Microsoft oversight or a VB.NET "feature"?</p>