Свойство Comparer
Свойство Comparer класса
HashSet<T>
возвращает IEqualityComparer<T>,
который используется для сравнения элементов
и вычисления хеш-кода. Если при создании
компаратор не передан, берётся сравнение
по умолчанию для типа T.
Синтаксис
IEqualityComparer<T> comparer = set.Comparer;
Пример
Давайте создадим множество строк с учётом регистра:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
HashSet<string> items = new HashSet<string>();
items.Add("a");
Console.WriteLine(items.Contains("A"));
}
}
Результат выполнения кода:
False
Пример
Давайте передадим StringComparer.OrdinalIgnoreCase
в конструктор:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
HashSet<string> items = new HashSet<string>(
StringComparer.OrdinalIgnoreCase);
items.Add("a");
Console.WriteLine(items.Contains("A"));
}
}
Результат выполнения кода:
True
Пример
Давайте сравним тип компаратора у двух множеств:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
HashSet<string> a = new HashSet<string>(
StringComparer.Ordinal);
HashSet<string> b = new HashSet<string>(
StringComparer.OrdinalIgnoreCase);
bool same = a.Comparer.Equals(b.Comparer);
Console.WriteLine(same);
}
}
Результат выполнения кода:
False
Смотрите также
-
метод
Contains,
который ищет элемент через Comparer -
метод
TryGetValue,
который возвращает сохранённое равное значение -
класс
SortedSet,
который использует порядковый компаратор -
интерфейс
IEquatable,
который задаёт сравнение экземпляров