Моя проблема заключается в том, что ContainsKey всегда возвращает false, даже если ключ был добавлен, а .Equals оценивается как true.
У меня есть следующий класс:
public class StatisticsFilter
{
private String someString1;
private String someString2;
.....
public override string ToString()
{
return string.Format("{0}-{1}-{2}-{3}-{4}", someString1, someString2, ...)
}
public override bool Equals(object obj)
{
return obj.ToString().Equals(ToString());
}
public override int GetHashCode()
{
return ToString().GetHashCode();
}
}
Затем у меня есть словарь, который выглядит так:
private readonly IDictionary<StatisticsFilter, Statistics> _filteredStatisticsDict =
new Dictionary<StatisticsFilter, Statistics>();
....
{
// ALWAYS EVALUATES TO FALSE!
if (_filteredStatisticsDict.ContainsKey(statisticsFilter) == false)
{
_filteredStatisticsDict.Add(statisticsFilter, new Statistics());
}
}
GetHashCode
. Всегда ли он возвращает одно и то же значение для одного и того же экземпляра? - person Etienne de Martel   schedule 25.05.2011ContainsKey(statisticsFilter)
оценивается как ложное илиContainsKey(statisticsFilter) == false
оценивается как ложное? - person Ben Voigt   schedule 25.05.2011