以下是否正确?
问题描述:
List<A> list = new List<A>();
A a = new A();
A.name = "name1";
list.Add(a);
a = new A();
a.name = "name2";
list.Add(a);
该列表是否最终包含名称等于“name2”的两个相同的A?以下是否正确?
如何利用一个变量来实现这一点?
答
该列表将包含A型的两个不同实例;一个名称设置为“name1”,另一个设置为“name2”。
+0
这是正确的。 – 2010-12-08 10:39:10
答
你有一些语法错误,应该是:
List<A> list = new List<A>();
A a = new A();
a.name = "name1";
list.Add(a);
a = new A();
a.name = "name2";
list.Add(a);
...但是这将导致2个与列表中不同名称的元素。
为什么?井a
变量指向一个新的A
实例,该引用被添加到列表中,然后a
指向一个新参考新A
创建第二次,则是参考被添加到列表中.. 。最后,列表最后会以2个不同的对象引用结尾 - 不同的A
实例,每个实例都有自己的name
。
+1
什么是`list.Dump();`? – 2010-12-08 10:43:13
你大概的意思`A =新的A();`的`,而不是一个新=(A);`。这也许正是你在你的原始代码中缺少列表中的两个不同的实例。 – 2010-12-08 10:40:01