C#包含两种类型:数据类型与引用类型,它们的重要区别在于:前者直接包含实际数据,后者只是存储对对象的引用。因此,引用类型有可能
多个变量引用同一个对象。以下代码体现出这种区别:
using System;
class test
{
public int i=0;
}
class hello
{
static void Main()
{
int i1=15;
int i2=i1;
i2=12;
test t1=new test();
test t2=t1;
t2.i=12;
Console.WriteLine("i1 i2 : {0}, {1}", i1, i2);
Console.WriteLine("t1.i t2.i : {0}, {1}", t1.i, t2.i);
}
}
执行结果:
i1 i2 : 15, 12
t1.i t2.i : 12, 12
实际中我还遇到过:我把一个列表对象赋给列表项,然后没有new,直接修改列表对象,再赋给新的列表项,这时两个列表项的内容却成了一样的了。
因为列表项也是对象,对象赋给对象,只是地址的拷贝而已,所以没有new的话,两个列表项都指向同一个地址。理解。