Свойство Comparer
Свойство Comparer класса
Dictionary<TKey, TValue>
возвращает IEqualityComparer<TKey>,
который используется при поиске и проверке
ключей. Если comparer не передавали в
конструктор, берётся сравнение по умолчанию
для TKey.
Синтаксис
IEqualityComparer<TKey> comparer = map.Comparer;
Пример
Давайте сравним два одинаковых ключа через Comparer:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
Dictionary<string, int> map = new Dictionary<string, int>();
var cmp = map.Comparer;
Console.WriteLine(cmp.Equals("abcde", "abcde"));
}
}
Результат выполнения кода:
True
Пример
Давайте передать свой comparer в конструктор:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var cmp = StringComparer.OrdinalIgnoreCase;
Dictionary<string, int> map = new Dictionary<string, int>(cmp);
map["abcde"] = 1;
Console.WriteLine(map.Comparer.Equals("abcde", "ABCDE"));
}
}
Результат выполнения кода:
True
Пример
Давайте убедиться, что разные строки не равны:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
Dictionary<string, int> map = new Dictionary<string, int>();
Console.WriteLine(map.Comparer.Equals("abcde", "12345"));
}
}
Результат выполнения кода:
False
Смотрите также
-
интерфейс
IEqualityComparer,
который задаёт Equals и GetHashCode -
метод
ContainsKey,
который опирается на comparer -
класс
SortedDictionary,
который использует IComparer для порядка -
свойство
Keys,
которое перечисляет ключи