я видел по крайней мере, 3 предложения по реализации пользовательского сравнения:Ключ сравнения для словаря, где соединение ключ является классом снова
- Переопределения
GetHashCode()
иEquals()
в классе. - Конструктор, который реализует
IEqualityComparer<TKey>
- Linq метод расширения
Contains
, что позволяет передавать вIEqualityComparer<T>
Мой вопрос - есть ли нужно делать что-либо вообще для стандартного сравнения для такого ключа соединения или это зависит на классе?
E.g. следующий сниппт работает должным образом:
Dictionary<TariffKey, RefCusNomenclatureGroup> tariff = new Dictionary<TariffKey, RefCusNomenclatureGroup>();
// dictionary populated
var trfKey = new TariffKey { Code = "xyz", SortKey = "123" };
if (tariff.ContainsKey(trfKey)) // compared as expected - match - when both string fields are equal
{
//do something here
}
struct TariffKey
{
public string Code { get; set; }
public string SortKey { get; set; }
}
Вы имеете в виду, что у вас есть рабочий код **, но вы боитесь, что сделали неправильный путь, потому что другие сказали, что вы должны сделать что-то еще? –