#c# #collections
#c# #Коллекции
Вопрос:
Есть ли какая-либо коллекция в фреймворке, подобная этой?
public class DesiredCollection<T>
{
public DesiredCollection(IEqualityComparer<T> comparer)
{
}
}
Требования:
- универсальная коллекция;
- IEqualityComparer или лямбда-выражение для определения равенства;
- нет необходимости определять тип ключа;
- получение элемента по ключу;
- получение всех элементов как IEnumerable.
Комментарии:
1. Чего вы пытаетесь достичь? Какое поведение вам нужно, чтобы коллекция выполняла?
2. @artplastika Когда вы говорите, что не нужно определять тип ключа; получение элемента по ключу; , я думаю, вам нужно
KeyedCollection<TKey, TItem>
. Вы также можете указать своюIEqualityComparer<TKey>
.
Ответ №1:
Различные коллекции принимают IEqualityComparer<T>
свои конструкторы (обычно как одну перегрузку из нескольких). В частности, Dictionary<TKey, TValue>
и HashSet<T>
попадают в эту категорию. Они используют средство сравнения равенства для проверки наличия ключей / элементов.
Однако на самом деле вы не выразили ничего, кроме необходимости в конструкторе, использующем средство сравнения равенства. Предположительно, вам понадобится нечто большее … что вы пытаетесь сделать?
Комментарии:
1. Спасибо, я принимаю это как ответ. Когда я проектировал, я забыл, что мне нужно получить определенный элемент из коллекции по ключу, поэтому словарь неизбежен 🙂