Which parts of C# .NET framework are actually parts of the language?
<p>I am wondering which parts of the <code>System</code> are language features (core components), and which parts are just useful filler, but aren't strictly necessary. I may be off with the wording here, so let me illustrate with an example what I mean.</p>

<p>Consider <code>System.Console</code> class it's obviously something that is used for something very particular. In essence, this thing is there to play nice with a feature of Windows / current OS. It's not what I would call a core component of the language.</p>

<p>On the other hand, take the <code>System.IDisposable</code> interface. That thing's obviously very important, as without it the <code>using()</code> statement is useless. A class needs to implement this particular interface for a language feature to kick in.</p>

<p>I could assume that the <code>mscorlib</code> is the responsible party here. A quick glance with the Object explorer shows that it indeed houses many of the components I can agree are core, while at the same time it puts the <code>Console</code> class into System namespace, which is just filler. </p>

<p>This notion of placing filler and language-specific objects into the same namespace equates them, but for a deeper understanding of C#, I would like to know which is which. So, I'm looking for a list of core components of C#. I'm assuming that there's a handy reference somewhere, but since I was asleep during the google-lecture I was unable to form the correct query to find it.</p>

<p>Thanks in advance.</p>

<p><strong>Much later EDIT</strong> I read <a href="http://blogs.msdn.com/b/ericlippert/archive/2011/06/30/following-the-pattern.aspx" rel="nofollow">this</a> Lippert blog post, it's kind-of-related. Interestingly <code>foreach</code> construct doesn't actually require <code>IEnumerable</code> interface to function.</p>
