(no subject)

Jul 09, 2009 11:19

Ощущаю себя идиотом.
"Dictionary<(Of <(TKey, TValue>)>) требует реализации проверки равенства, что позволит определять, совпадают ли ключи. Можно задать реализацию универсального интерфейса IEqualityComparer<(Of <(T>)>), используя конструктор, принимающий параметр comparer; если реализация не задана, используется универсальный компаратор по умолчанию, проверяющий на равенство (EqualityComparer<(Of <(T>)>)..::.Default). Если тип TKey реализует универсальный интерфейс System..::.IEquatable<(Of <(T>)>), компаратор по умолчанию, проверяющий на равенство, использует эту реализацию. "
(с) MSDN

Если это так, то почему при ключе:
class AccountType : IEquatable
{
        Int32 code;
        String name;

//<.....>//

public bool Equals(AccountType other)
        {
            return this.code.Equals(other.code);
        }

public override bool Equals(object obj)
        {
            if (obj.GetType() == typeof(AccountType))
            {
                return Equals(obj as AccountType);
            }
            else
            {
                return false;
            }
        }
}

Если я ТОЧНО знаю, что в коллекции содержится AccountType { code=1;name="";}, и передаю туда (пробовал два варианта
AccountType { code=1;name="";} или AccountType { code=1;name="ЖКУ";} - ключ не находится.
Таки не понятно, что оно от меня ещё хочет?

P.S. Проверка выполняется из тестового проекта, под Debug теста, если это имеет значение.

программерское

Previous post Next post
Up