title: Why doesnt the .Net framework use Guard class (or equivalent) for method arguments
body: <p>if one takes a look at the decompiled source of the .net framework code most of the APIs have checks like these</p>
  
  <pre><code>if (source == null)
      throw Error.ArgumentNull("source");
  </code></pre>
  
  <p>on the method arguments instead of using a more generic class like</p>
  
  <pre><code>Guard.IsNotNull(source);
  </code></pre>
  
  <p>Is there a reason behind doing this explicilty every time or is this just legacy code that is been around since the framework was developed and the newer classes are moving towards this or are there any inherent advantages of having explicit checks? One reason that I could think off is probably to avoid overloading the stack with function pointers. </p>