title: Array index return null instead of out of bound
body: <p>I am currently trying to implement an "indexed" property within my class definition.</p>
  
  <p>For example I have the following class:</p>
  
  <pre><code>public class TestClass
  {
     private int[] ids = null;
  
     public string Name { get; set; }
     public string Description { get; set; }
     public int[] Ids { 
        get
        {
           //Do some magic and return an array of ints 
           //(count = 5 - in this example in real its not fixed)
           return _ids;
        }
     }
  }
  </code></pre>
  
  <p>Now I like to use this class as the following:</p>
  
  <pre><code>private void DoSomething()
  {
     var testClass = GetSomeTestClass();
     //work with the ids
  
     for (int i = 0; i &lt; 10; i++) //I know I could say i &lt; Ids.Length, its just an example
     {
        int? id = testClass.Ids[i];
        //this will result, in a out of bound exception when i reaches 5 but I wish for it to return a null like a "safe" index call ?!?
     }
  }
  </code></pre>
  
  <p>So is there a safe index call that results in a null, without the need for me to wrap it again and again in a try catch.</p>
  
  <p>Another thing I dont wish to use the class index, because I need several properties that work like this, with different types (int, string, bool, custom class and so on).</p>
  
  <p>(Again the for is just a simple example, I know I could in this case say "i &lt; Ids.Length")</p>