6
익명 형식을 비교할 때 Equals() 및 ==의 의미가 다른 이유는 무엇입니까? 왜 하나는 값을 비교하고 다른 하나는 참조를 비교합니까? 그 이유는 무엇입니까?익명 형식에 대한 동일성
익명 형식을 비교할 때 Equals() 및 ==의 의미가 다른 이유는 무엇입니까? 왜 하나는 값을 비교하고 다른 하나는 참조를 비교합니까? 그 이유는 무엇입니까?익명 형식에 대한 동일성
==
은 Equals
을 호출하지 않으며, ==
오버로드 연산자를 찾습니다. 익명 형식은 연산자 ==
을 오버로드하지 않으므로 C#은 참조 비교를 사용합니다.
그러나 Equals
으로 필드 값을 비교합니다. 이것이 ==
과 Equals
사이의 결과가 다른 이유입니다. 익명의 종류에 같고를 GetHashCode 방법이 등호와 등록 정보를 GetHashCode 방법으로 정의되므로
Anonymous Types (C# Programming Guide)
같은 익명 형 두 경우 모두의 경우에만 같다 그 속성은 동일합니다.
감사! 내부적으로 C# 컴파일러는 익명 형식의 봉인 된 클래스를 구현합니다. 이유에 대한 이유는 == 참조를 비교하는 것이 나에게 완벽 함을 의미합니다. 그러나 참조 유형에 대한 값을 비교하는 Equals()는 나에게별로 의미가 없습니다. – DBK
비록 문자열이 Equals()를 사용하여 문자열을 비교할 때 string 만 예외였습니다. 그러나 문자열의 경우에는 의미가 있습니다. – DBK