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”?
如何利用一个变量来实现这个目标?
答案 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,但它只应在两个对象相等时添加一个。