title: C# Specification - Section 1.6.7.5 can someone please explain this example?
body: <p>I wanted to learn more about C# language and a lot of people have recommended digging into the C# specification, so I went and downloaded a copy of it from MSDN and started reading and going through the examples.</p>
  
  <p><strong>C# Specification Introducton - Section 1.6.7.5 Operators</strong></p>
  
  <blockquote>
    <p>"The List class declares two operators, <strong>operator ==</strong> and <strong>operator</strong>
    !=, and thus gives new meaning to expressions that apply those
    operators to List instances. Specifically, the operators define
    equality of two List instances as comparing each of the contained
    objects using their Equals methods. The following example uses the ==
    operator to compare two List instances."</p>
  </blockquote>
  
  <p>I don't understand why the output would be <strong><em>True</em></strong> and <strong><em>False</em></strong> as opposed to both being <strong>False</strong>.</p>
  
  <pre><code>using System;
  class Test
  {
      static void Main() {
          List&lt;int&gt; a = new List&lt;int&gt;();
          a.Add(1);
          a.Add(2);
          List&lt;int&gt; b = new List&lt;int&gt;();
          b.Add(1);
          b.Add(2);
          Console.WriteLine(a == b);      // Outputs "True" 
          b.Add(3);
          Console.WriteLine(a == b);      // Outputs "False"
      }
  }
  </code></pre>
  
  <p>I pop this into Visual Studio and sure enough I got both the Console.WriteLine() as '<strong>False</strong>' as opposed to both being 'True' and 'False' as specified in the comments. </p>
  
  <p>It also states that the List-of-T declares a single event member called <strong>Changed</strong>, I could not for the life of me find it, I went into the decompiler and had a look as well.</p>
  
  <p>Maybe I'm completely mis-reading it or I've got the wrong C# specification.</p>