堆和栈(C#)

来源:互联网 发布:fdd lte网络 编辑:程序博客网 时间:2024/05/20 04:10

C# 有两种类型变量值类型和引用类型,分别继承System.ValueType和System.Object。

值类型包括:bool,byte,int,long,double,float等;引用类型包括:class,interface,delegate,object,string。

值类型一般分配在栈上,而引用类型总是分配在堆上。

栈里面分配的是连续内存,每个指都有自己的内存空间,而堆中分配的是不连续内存,可以指向同一内存,举例:

值类型:

public void ValueType()
 {
            int x;
            int y;
            x = 3;
            y = x;
            y = 4;
 }

此时,Y=4,X=3。


引用类型:

public class MyTest
{
        public int num;
}

public void ObjectType()
{
        MyTestx = new MyTest();

        MyTesty = new MyTest();
        x.num= 3;
         y = x;
        y.num= 4;
}

此时,x,y都指向同一内存,说以x.num和y.num都为4


0 0