title: DataReader[i] vs DataReader.GetValue(i) vs DataReader.GetString(i)
body: <p>Is</p>
  
  <pre><code>dataReader[i]
  </code></pre>
  
  <p>logically equivalent to</p>
  
  <pre><code>dataReader.GetValue(i)
  </code></pre>
  
  <p>Are they the same? Are they different? Is there a situation where one would be appropriate over the other?</p>
  
  <p>There are <a href="http://msdn.microsoft.com/en-us/library/system.data.idatareader.aspx" rel="noreferrer">documented differently</a>:</p>
  
  <blockquote>
    <ul>
    <li><em>Gets the column located at the specified index</em></li>
    <li><em>Return the value of the specified field.</em></li>
    </ul>
  </blockquote>
  
  <p>But when i use them they both return the value of the field. What does it mean to "get the column"? What does it mean to "return the value of a field"?</p>
  
  <hr>
  
  <p><strong>Bonus Chatter</strong>:</p>
  
  <p>When I call:</p>
  
  <pre><code>reader[i];
  reader.GetValue(i);
  reader.GetString(i);
  </code></pre>
  
  <p>i get a <code>String</code> each time</p>