个int属性会内联存在堆上,内联的意思就是对象的值类型属性直接存储在堆上,就是在堆上直接开一个32bit的空间.说到这好像也没太大区别,但是和对象的存储比较一下就清楚了.
如果有个对象的属性和一个值类型的属性:
classA
{
int v1;
classB v2;
}
那么实例化classA的对象时,v1那个位置直接存一个32位int数
v2那个地方存的是在堆上另一个对象的位置,相当于一个32位指针.
static类型是程序加载时就分配内存的.
普通类型是需要时才分配.
static类型是整个类公用的,所有该类的实例共享的都是同一个变量
另外不需要实例化一个类型,就可以以 类名.成员 的方式访问静态成员
在.NET程序启动的时候,系统框架会自动根据所写的程序,将类创建在一个特定内存中。当创建该类的对象时,根据内存中的类模板,创建一段内存区间代表该对象。
当调用方法时,就会先到类对应的内存空间,找到方法的定义,按照类中方法的定义去执行一些操作。
我的这种描述只是告诉你个大概的原理,还不够特别准确。如果想了解详细工作方式,可参考《.NET框架程序设计》这本书。