I want to ask why all calls to the extern method are static? How does the CLR handle these calls?
External method calls are unmanaged code. Thus, it makes no sense to call an instance of an object (managed) - the first (hidden) argument in the instance method is a reference to the instance, otherwise this. Typically, methods externinclude simply simple types (primitives, strings, etc.) - not objects (with the possible exception of arrays), and even they are often resolved first IntPtr).
this
extern
IntPtr
extern , , API- "C-style", C , static.
static
100% , ThisCall, [DllImport] ++.