2010-01-29 3 views
6

사전을 사용하는 동안 GetHashCode 및 Equals를 항상 무시하거나 사전에 사용자 지정 비교자를 제공합니다.익명 클래스를 사전에 사용자 지정 키로 작성

익명 클래스를 키로 만들면 어떻게 될까요?

샘플 코드 ....

var groups=(from item in items 
       group item by new { item.ClientId, item.CustodianId, item.CurrencyId } 
        into g 
        select new { 
        Key=g.Key,      
        Sum=g.Sum(x => x.Cash) 
        }).ToDictionary(item=>item.Key,item=>item.Sum); 

이 코드는 나에게 예상되는 결과를 제공,하지만 난 GetHashCode를 제공하고 익명 클래스의 Equals 메서드 있지 않다. 이 코드가 익명의 클래스를 기준으로 항목을 그룹화하지 않아야합니까 ??

답변

14

아니요 - 익명 클래스는 자동으로 적절한 Equals/GetHashCode 구현을 생성합니다. C# 언어 사양에서

섹션 7.5.10.6 :

익명 형식의 같음과를 GetHashCode 방법은 개체에서 상속 방법 을 무시하고, 같음과 GetHashcode 의 관점에서 을 정의 두 개의 동일한 익명 유형의 인스턴스는 등록 정보가 동일한 경우에만 동일합니다.