title: Why does IList<>.Reverse() not work like List<>().Reverse
body: <p>I have problem with <code>List&lt;T&gt;.Reverse()</code> and <code>Reverse(this IEnumerable&lt;TSource&gt; source)</code>.
  Look to the code:</p>
  
  <pre><code>  // Part 1
    List&lt;int&gt; list = new List&lt;int&gt; { 1, 2, 3 };
  
    foreach (int x in list)
      Console.Write(x);
  
    Console.WriteLine();
  
    list.Reverse();
  
    foreach (int x in list)
      Console.Write(x);
  
    Console.WriteLine();
    list.Reverse();
  
    // Part2
    IList&lt;int&gt; ilist = list;
  
    foreach (int x in list)
      Console.Write(x);      
  
    Console.WriteLine();
  
    ilist.Reverse();
  
    foreach (int x in ilist)
      Console.Write(x);
  
    Console.WriteLine();
  
    ilist.Reverse();
  </code></pre>
  
  <p>My result:</p>
  
  <pre><code>123
  321
  123
  123
  </code></pre>
  
  <p>because <code>Reverse()</code>-Part1 is <code>List&lt;T&gt;.Reverse()</code>, <code>Reverse()</code>-Part2 is <code>Reverse(this IEnumerable&lt;TSource&gt; source)</code>
  I want execute <code>List&lt;int&gt;.Reverse()</code> in Part2 for <code>IList&lt;int&gt;</code>. How I can do it?</p>