Создание анонимного класса как пользовательский ключ в словаре

При использовании словаря я всегда переопределяю GetHashCode, и Равняется (или предоставьте пользовательский компаратор словарю).

Что происходит позади покрытий, когда я создаю анонимный класс как ключ?

Пример кода....

 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 и Равняюсь методу для анонимного класса. Разве это не должно кодировать сбой для группировки моих объектов на основе объектов в анонимном классе??

9
задан Manish Basantani 29 January 2010 в 09:41
поделиться

1 ответ

Нету - анонимный класс автоматически генерирует соответствующие реализации / gethashcode.

С точки зрения языка C #, раздел 7.5.10.6:

Theal и методы GethashCode Анонимные типы переопределяют методы унаследовано от объекта и определены С точки зрения равных и GethashCode свойств, так что два экземпляры того же анонимного типа равны, если и только если все их свойства равны.

17
ответ дан 4 December 2019 в 12:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: