值类型与引用类型小demo
当我们使用引用类型时,我们实际是在处理该类型的指针,而非该类型本身。当我们使用值类型时,我们是在使用值类型本身。听起来很迷糊吧?
同样,例子是最好的描述。
假如我们执行以下的方法:
public int ReturnValue()
{ int x = new int(); x = 3; int y = new int(); y = x; y = 4; return x; }我们将得到值3,很简单,对吧?
假如我们首先使用MyInt类
public class MyInt
{ public int MyValue; }接着执行以下的方法:
public int ReturnValue2()
{ MyInt x = new MyInt(); x.MyValue = 3; MyInt y = new MyInt(); y = x; y.MyValue = 4; return x.MyValue; }我们将得到什么?... 4!
为什么?... x.MyValue怎么会变成4了呢?... 看看我们所做的然后就知道是怎么回事了:
在第一例子中,一切都像计划的那样进行着:
public int ReturnValue()
{ int x = 3; int y = x; y = 4; return x; }在第二个例子中,我们没有得到"3"是因为变量"x"和"y"都同时指向了堆中相同的对象。
public int ReturnValue2() { MyInt x; x.MyValue = 3; MyInt y; y = x; y.MyValue = 4; return x.MyValue; }希望以上内容能够使你对C#中的值类型和引用类型的基本区别有一个更好的认识,并且对指针及指针是何时被使用的有一定的基本了解