注意,将一个对象a赋值给对象b后,对于b属性值的修改会改变a的属性值。 但当把其它对象赋值给b后,对b的任何操作均与a无关。(可以理解为:将对象b赋值给对象a,只是将b的指针赋给a,对b的属性的操作为对该指针所的对象区域的操作,故会影响到a. 而将另一对象赋值给b,则给了b一个新的地址指针,与a无关了)
class MyClass
{
public int Value = 0;
}
ArrayList arrList = new ArrayList();
arrList.add(new MyClass());
MyClass b = (MyClass)arrList[0];
b.Value = 1; //arrList[0]中的value也为1.
TestFun(b)
MyClass d = new MyClass();
d.Value =4;
b = d; ////arrList[0]中的value值不变。
private void TestFun(MyClass tmp)
{
tmp.value = 2; //arrList[0]中的value也为2
MyClass c = new MyClass();
c.Value =3;
tmp = c; ////arrList[0]中的value值不会改变
//如果要使arrList[0]生效,则应加入ref修饰符。
}