title: Is it safe to add items to the List while iterating through it
body: <p>I understand that one cannot use an enumerator and make amendments to <code>List&lt;T&gt;</code> at the same time. Adding or removing an item will invalidate the enumerator(<a href="http://msdn.microsoft.com/en-us/library/system.collections.ienumerator(v=vs.110).aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/system.collections.ienumerator(v=vs.110).aspx</a>), since the internal array will be reallocated(<a href="http://msdn.microsoft.com/en-us/library/3wcytfd1(v=vs.110).aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/3wcytfd1(v=vs.110).aspx</a>).</p>
  
  <ol>
  <li>Is it always true, even if <code>Count</code> is less than <code>Capacity</code>?(As far as I understand in this case the array won't be reallocated, so the enumerator has to be valid);</li>
  <li>Why <code>Current</code> returns the element that it is set to, even if the enumerator is already invalidated?(I mean, if the array was reallocated...);</li>
  <li>Does reallocation preservers the original order of the items? I mean if some item has index of n, will it have the same index after adding and item?(MSDN says that <code>Add</code> adds an object to the end of the list) If so, it is safe to run through a list in a regular <code>for</code> loop and to add the items assuming that the loop will iterate through each item only once, am I correct?</li>
  </ol>