Ну, вы еще не показали, где вы заполняете словарь или что такое sfTKey
... но я сильно подозреваю, что это потому, что вы не переопределили Equals
или GetHashCode
в DicKeys
.
По умолчанию классы используют ссылочный идентификатор для равенства - другими словами, две ключевые ссылки будут сравниваться как равные, только если они ссылаются на один и тот же объект. Вы можете переопределить Equals
и GetHashCode
, чтобы обеспечить равенство на основе содержимого объектов. Типы значений (структуры) автоматически используют равенство на основе значений, но я, конечно, не рекомендую использовать изменяемую структуру, как вы получили здесь. (Если честно, я бы вообще не рекомендовал использовать открытые поля.)
См. в этом вопросе для примера того, что вы могли бы делать в Equals
и GetHashCode
- и некоторых других членах, которые вы, возможно, захотите предоставить для типов, имеющих равенство на основе значений.