Интерфейс IEqualityComparer
Интерфейс IEqualityComparer<T>
объявляет Equals
и GetHashCode
для сравнения объектов по выбранному правилу.
Синтаксис
bool Equals(T x, T y);
int GetHashCode(T obj);
Пример
Давайте возьмём EqualityComparer.Default:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var cmp = EqualityComparer<int>.Default;
Console.WriteLine(cmp.Equals(1, 1));
}
}
Результат выполнения кода:
True
Пример
Давайте сравним разные int:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var cmp = EqualityComparer<int>.Default;
Console.WriteLine(cmp.Equals(1, 2));
}
}
Результат выполнения кода:
False
Пример
Давайте получим GetHashCode:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var cmp = EqualityComparer<int>.Default;
Console.WriteLine(cmp.GetHashCode(5) == cmp.GetHashCode(5));
}
}
Результат выполнения кода:
True
Пример
Давайте сравним строки без учёта регистра:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var cmp = StringComparer.OrdinalIgnoreCase;
Console.WriteLine(cmp.Equals("abcde", "ABCDE"));
}
}
Результат выполнения кода:
True
Смотрите также
-
класс
EqualityComparer,
который помогает создать comparer -
интерфейс
IEquatable,
который сравнивает объект с другим -
метод
Equals,
который проверяет равенство пары -
метод
GetHashCode,
который возвращает хеш объекта