Если я хочу использовать объекты в качестве ключей для Dictionary
, какие методы мне нужно будет переопределить, чтобы сравнить их определенным образом?Использование объекта в качестве общего ключа словаря
Скажет, у меня есть класс, который имеет свойство:
class Foo {
public string Name { get; set; }
public int FooID { get; set; }
// elided
}
И я хочу, чтобы создать:
Dictionary<Foo, List<Stuff>>
Я хочу Foo
объектов с одинаковыми FooID
считаться той же группой. Какие методы мне нужно переопределить в классе Foo
?
Подводя итоги: Я хочу классифицировать Stuff
объектов в списках, сгруппированных по Foo
объектов. Stuff
объектов будут иметь адрес FooID
, чтобы скрыть их к категории.
+1 и я не хочу увлекать эту тему, но у меня создалось впечатление, что GetHashCode() должен возвращать FooId.GetHashCode(). Это не правильный шаблон? –
@ Ken - ну, ему просто нужно вернуть int, который предоставляет необходимые функции. Какой FooID будет делать так же, как FooID.GetHashCode(). В качестве детали реализации Int32.GetHashCode() является «return this;». Для других типов (строка и т. Д.), Тогда да: .GetHashCode() будет очень полезен. –
Спасибо! Я пошел с IEqualityComparer, поскольку только для Дикарионари мне нужны были переопределенные методы. –
Dana