以下是否正确?

问题描述:

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?以下是否正确?

如何利用一个变量来实现这一点?

+0

你大概的意思`A =新的A();`的`,而不是一个新=(A);`。这也许正是你在你的原始代码中缺少列表中的两个不同的实例。 – 2010-12-08 10:40:01

该列表将包含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

您是否尝试过使用Hashset(T)?你需要为你的类创建一个IComparer,但是它应该只在两个对象相等时添加一个。

MSDN Hashset