title: Access property in C# via indexer
body: <p>C# allows you to override the array indexer of the <code>this</code> property, like so:</p>
  
  <pre><code>int this[int index] 
  {
      get { return _hidden[index]; } 
      set { _hidden[index] = value; }
  }
  int[] _hidden;
  </code></pre>
  
  <p>However, I'd like to access a differently named property via an index, like so:</p>
  
  <pre><code>int Hidden[int index] 
  { 
      get { return _hidden[index]; } 
      set { _hidden[index] = value; }
  }
  int[] _hidden;
  </code></pre>
  
  <p>I know I could work around this by using it as a regular parameter, as such:</p>
  
  <pre><code>int Hidden(int index) 
  {
      return _hidden[index];
  }
  void Hidden(int index, int value) 
  { 
      _hidden[index] = value;
  }
  int[] _hidden;
  </code></pre>
  
  <p>However, I lose the convenience of a named property that way, and I'm essentially returning to publicly named get/set methods. Additionally, as I am behind the scenes accessing members of an array, the array indexing notation makes more sense conceptually for my situation.</p>
  
  <p>Is there any way to combine the convenience of the operator with the array indexer?</p>