栈:一个后进先出的数据结构,用于储存值类型数据,大小有限制,存取速度快,灵活性差,数据可以共享,
如: int a=1 ; int b =1; Console.Write(a.Equals(b)) 返回True
托管堆:一个先进先出的数据结构,用于储存引用类型数据,当申请分配引用类型数据内存时候, 先在栈中存一个引用地址,这个引用地址指向的值位于托管堆中, 受GC 控制,自动释放, 他们引用的对象是不相等的
如 int[] a = new int[2];int[] b = new int[2];Console.Write(a.Equals(b)); 返回FALSE
对于引用类型,如果在声明变量的时候没有使用new运算符,运行时就不会给它分配托管堆上的内存空间,而是在栈上给它分配一个包含null值的引用。对于值类型,运行时会给它分配栈上的空间,并调用默认的构造函数,来初始化对象的状态。