以下是否正确?

时间:2010-12-08 10:35:33

标签: c# .net

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);

列表最终是否包含两个相同的A,其名称等于“name2”?

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

3 个答案:

答案 0 :(得分:4)

该列表将包含两个不同的A类实例;一个名称设置为“name1”,另一个名称设置为“name2”。

答案 1 :(得分:1)

你有一些语法错误,应该是:

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指向一个带有新{{>>新的引用1}}你第二次创建,然后 引用被添加到列表中...所以列表最后有2个不同的对象引用 - 最后到不同的A个实例与他们自己的A

答案 2 :(得分:0)

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

MSDN Hashset