title: Difference between array.GetLength(0) and array.GetUpperBound(0)
body: <p>What is the difference between these two methods and when would you use one instead of the other?</p>
  
  <pre><code>int[,] array = new int[4,3];
  int length0 = array.GetLength(0);
  int upperbound0 = array.GetUpperBound(0);
  </code></pre>
  
  <p>MSDN says that GetLength return the number of elements where as GetUpperBound determine the max index, but how could this be different since arrays are initialized with elements for each index?</p>