2010-12-08 2 views
0
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)의;'. 또한 아마도 원래 코드에서 두 개의 다른 인스턴스를 만들기 위해 누락 된 부분 일 것입니다. –

답변

4

목록에는 유형 A의 두 가지 인스턴스가 포함됩니다. 하나는 이름이 "name1"로 설정되고, 다른 하나는 "name2"로 설정됩니다.

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 개 요소가 발생할 것입니다 : 당신은 몇 가지 구문 오류가

+0

맞습니다. –

1

, 그것은해야합니다.

왜? 그럼 새로운 A 인스턴스에 a 변수 점은, 해당 참조는 참조 목록에 추가됩니다 것을 다음, 두 번째 시간을 만들 새로운 A으로 새로운 기준으로 다음 목록에 a 점을 추가됩니다 .. .so 결국 목록에 2 개의 별개의 객체 참조로 끝납니다. 각각 A 인스턴스에는 각각 name이 있습니다.

+1

'list.Dump();는 무엇입니까? –

+0

@Cody - oops, 그의 구문 테스트에서 남겨 뒀습니다. –

0

Hashset (of T)을 사용해 보셨나요? 클래스에 대한 IComparer를 만들 필요가 있지만 두 개체가 같은 경우에만 IComparer를 추가해야합니다.

MSDN Hashset

관련 문제