IEqualityComparer против EqualityComparer? - PullRequest
8 голосов
/ 05 марта 2012

Я прочитал пост , но он не отвечает на мой вопрос.

MSDN говорит :

Мы рекомендуем вам наследовать от класса EqualityComparer (Of T) вместо реализации интерфейса IEqualityComparer (Of T), поскольку класс EqualityComparer (Of T) проверяет равенство, используя метод IEquatable (Of T) .Equals вместо метод Object.Equals.

но если я посмотрю на реализацию, они оба используют универсальный тип:

 public class AAA:IEqualityComparer<Box>
    {
        public bool Equals(Box x, Box y)
        {
        }

        public int GetHashCode(Box obj)
        {
        }
    }

    public class BBB : EqualityComparer<Box>
    {
        public override bool Equals(Box x, Box y)
        {
        }

        public override int GetHashCode(Box obj)
        {
        }
    }

Чего мне не хватает?

1 Ответ

5 голосов
/ 20 февраля 2015

Я думаю, что другой пост , о котором вы упомянули, говорит, что EqualityComparer<Box> реализует IEqualityComparer<Box> и IEqualityComparer, поэтому вам не нужно реализовывать как универсальные, так и неуниверсальные интерфейсы, если вы производитеот EqualityComparer<Box>.

...