值类型直接存储其职,而引用类型存储对值的引用。
值类型可以根据情况存储在堆栈上。而引用类型存储在堆上。
值类型总是放在它被声明的地方。如果值类型数据在方法体外被声明,且存在于一个引用类型中,那么它将被堆中的引用类型所取代。
C#把数据类型分为两种
- 值类型
- 引用类型
从概念上看,其区别是值类型直接存储其值,而引用类型存储对值的引用。
这两种类型存储在内存的不同地方:值类型存储在堆栈中,而引用类型存储在托管堆上。
注意区分某个类型是值类型还是引用类型,因为这种存储位置的不同会有不同的影响。
例如:int 是值类型,这表示下面的语句会在内存的连个地方存储值20:
i = 20;
j = i
考虑如下代码,这段代码假定已经定义了一个类Vector,Vector是一个引用类型,它有一个int类型的成员变量Value:
Vector x,y;
x = new Vector();
x.Value = 30;
y = x;
Console.WriteLine(y.Value);
y.Value = 50;
Console.WriteLine(x.Value);
30,50
如果变量是一个引用,就可以把其值设置为null,表示它不引用任何对象。