对于C#中的方法来说,是没有分配内存这个概念的,无论静态方法还是动态方法,都是存放在某一个特定的位置上的。不同的是在类加载的时候,静态方法通过类名引用,动态方法通过实例化引用。而实例化类时,不会为类的方法分配内存,只是给类实例的数据分配内存,所以成员变量和成员函数的内存分配是不一样的。

       静态时类的,实例是对象的。静态方法在它一启动的时候就实例化了,因而静态内存是连续的,而且静态内存是有限制的;而实例方法是在程序运行中生成内存的,实例申请的是离散的空间,静态方法大多用在数据连接上;

      每个实例对象的所有字段都会在内存中复制一份,也是靠此来区分你现在操作的是哪个对象;但是方法不一样,不论有多少实例对象,方法的代码都是一样的,只需要复制一份而已,也就是只存在一份代码,只会占用一份内存空间。所以前面说不论什么方法,是不存在分配内存的概念。方法作为代码是被加载到特殊的代码区域,这个内存区域是不可写的。

     另外,在线程安全、性能和兼容性方面实例化方法更具优势。