public class MyClass
{
private string name; public MyClass(string s)
{
name = s;
} public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
}//another class
public void Test()
{
ArrayList lst = new ArrayList();
MyClass c = new ("abc");
lit.Add(c);
c = null;
MyClass c1 = lst[0] as MyClass;
if (c1 != null)
{
Console.WriteLine(c1.Name);
}
}为什么在Test中把c设成null不影响lst中的值呢?
{
private string name; public MyClass(string s)
{
name = s;
} public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
}//another class
public void Test()
{
ArrayList lst = new ArrayList();
MyClass c = new ("abc");
lit.Add(c);
c = null;
MyClass c1 = lst[0] as MyClass;
if (c1 != null)
{
Console.WriteLine(c1.Name);
}
}为什么在Test中把c设成null不影响lst中的值呢?
public void Test()
{
ArrayList lst = new ArrayList();
MyClass c = new ("abc");
lit.Add(c);
c.Name = "bcd";
c = null;
MyClass c1 = lst[0] as MyClass;
if (c1 != null)
{
Console.WriteLine(c1.Name);
//输出为bcd why?
}
}
也就是对C对象所指的地址做了另一次引用,你把C变为NULL,只是让C不再指向以前的地址
跟LIST中的对象无关系,如果你C。NAME = null,就影响了
之后你再修改c的地址并不影响lit里保存的地址。
你执行lit.Add(c);就是把c的值加入到了lst
在把c = null;对lst没有影响,呵呵