У меня есть отсортированный словарь с использованием настраиваемых ключевых структур. Чтобы облегчить сортировку, у меня есть переменная в ключе, которую я не хочу участвовать в сравнении равенства.SortedDictionary.TryGetValue() Перегрузки
Пример класса
public struct Key
{
//Needs to participate in equality comparison for SortedDictionary.TryGetValue();
public int intKey;
public object objectKey;
//Needs to be ignored in SortedDictionary.TryGetValue();
public int sortingVariable;
public string otherSortingVariable;
}
Я попытался перегрузки Equals
и GetHashCode
в той степени, что new Key().equals(new Key())
возвращает истинное.
Однако SortedDictionary.TryGetValue(new Key(), out Value)
возвращает ложные
Как был создан словарь? Вы передали конструктор 'IComparer' конструктору? –
haim770
Я не могу воссоздать вашу проблему, я попытался быстро реализовать то, что вы описали, и 'TryGetValue (новое значение Key(), out Value) возвращает правильное значение. Пожалуйста, предоставьте [mcve]. –
@ haim770 Я забыл указать, что 'Key' реализует' IComparable '. Однако функция 'CompareTo' используется исключительно для сортировки и никогда не вернется '0' –
DarkDestry