title: How does extern work in C#?
body: <p>Whenever I look deeply enough into reflector I bump into <code>extern</code> methods with no source.  I read the msdn documentation at <a href="http://msdn.microsoft.com/en-us/library/e59b22c5(v=vs.80).aspx" rel="noreferrer">http://msdn.microsoft.com/en-us/library/e59b22c5(v=vs.80).aspx</a>.  What I got from that article is that methods with the <code>extern</code> modifier have to be injected.  I interpreted this to mean it works something like an abstract factory pattern.  I also noticed that I've never seen a non-static extern method.  Is static declaration a requirement (I could see how this would make sense)?   I'm still guessing here and I'm not sure how it actually works.  It seems to me like the compiler must recognize certain attributes that mitigate processing, but I don't know what the attributes are other than ones I've come across like <code>MethodImplAttribute</code> and <code>DllImportAttribute</code> from the MSDN example.  How does someone leverage the <code>extern</code> attribute?  It said that in many instances this can increase performance.  Also, how would I go about looking into the source of <code>extern</code> methods like <code>Object.InternalGetEquals()</code>? </p>