在一个aspx代码文件中:
public class A {
public string a;public A()
{a="";
}
}
public class webform1: System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
ArrayList test=new ArrayList();
A abc=new A();
abc.a="1";
test.Add(abc);
abc.a="2";
test.add(abc);
}
}为什么test中两个对象元素的a成员值都为2?
public class A {
public string a;public A()
{a="";
}
}
public class webform1: System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
ArrayList test=new ArrayList();
A abc=new A();
abc.a="1";
test.Add(abc);
abc.a="2";
test.add(abc);
}
}为什么test中两个对象元素的a成员值都为2?
将
abc.a="2";
test.add(abc);
改成:
abc=new A();
abc.a="2";
test.add(abc);
test.Add(abc);
不是
test.add(abc);
会在内存中分配一块地址给abc 也相应的给他的参数a一个地址。
第一次你用abc.a="1"的时候把1放到了那个地址里面。第二次abc.a="2"的时候因为还是一个类的实例,a的地址没变。只是把里面的1换成了2。所以再调用的时候a的值就是2了
两次调用完全是独立进行的
但是,你只定义了一个实体对象
当第一次调用,a值是1
但是,紧接着你就将abc实体的a值改为了2