这两种类型存储在内存的不同地方:值类型存储在堆栈中,而引用类型存储在托管堆上。
注意区分某个类型是值类型还是引用类型,因为这种存储位置的不同会有不同的影响。
例如:int是值类型,这表示下面的语句会在内存的两个地方存储值20:
i
j
但考虑下面的代码,这段代码假定已经定义了一个类Vector,Vector是一个引用类型,它有一个int类型的
成员变量Value:
Vector
x
x.Value
y
Console.WriteLine(y.Value);
y.Value
Console.WriteLine(x.Value);
执行这段代码,只有一个Vector对象,x和y都指向包念该对象的内存位置。
因为X和Y是引用类型的变量,声明这两个变量只是保留了一个引用一一而不会实例化给定类型的对象。要创建对象就必须使用new关键字。
x,y在值类型的情况下,x的改变不影响y;在引用类型的情况下,x与y的改动相互影响,这只是表层的理解,深层次的研究可以参考点击打开链接