2010-05-28 3 views
6

같은 열거 형의 열거 값을 포함하는 두 개체를 비교 사용 된 Enum 유형과 관계없이 결과. 비교에서 개체는 항상 열거 형을 포함하며 둘 다 같은 유형입니다.내가 정의 된 열거 형이

어떻게하면됩니까?

답변

4

There is a good article on MSDN on when to use == and when to use Equals.

기본적 평등의 2 개 종류가있다. 2 개의 객체가 참조 동등성을 가지면 그에 따라 값의 동일성을 갖게됩니다 (두 참조가 같은 객체를 가리킴 때문에 물론 그 값은 동일합니다).

반대의 경우 (귀하의 경우) 항상 그렇지는 않습니다. 2 개의 객체가 값의 동일성을 가지면 반드시 참조 평등을 가질 필요는 없습니다. 귀하의 사례에서 ==은 참조 평등의 역할을합니다.

  • 일반적으로 원하는 것은 Equals이며 System.Object에 정의 된 가상 메서드입니다.

  • 일반적으로 참조 유형에 대해 원하지 않는 것은 ==이며 일반적으로 두 참조가 동일한 객체를 참조하는지 비교합니다. 귀하의 경우 AB에서

는 2 개의 다른 개체로 박스된다. A은 첫 번째를 말하며 B은 두 번째를 말합니다. ==은 테스트 중이며 둘 다 다른 것들에 referring임을 확인합니다.

+0

열거 형 비교에서 예외가 발생합니까? 그렇다면 그 해결책은 무엇입니까? –

3

그냥 A.Equals(B)을 사용하면 내부 유형이 같음을 호출합니다.

==의 경우 A와 B는 두 개의 다른 개체로 묶여 있기 때문에 사용할 수 없습니다. 참조 평등 값 같음 :

관련 문제