Список уникальных последовательностей с EqualityComparer - PullRequest
0 голосов
/ 16 апреля 2020

Я хочу создать структуру List<List<int>>, чтобы можно было добавлять только отдельные последовательности чисел. Для этого я создаю EqualityComparer следующим образом:

public class ListEqualityComparer<TElement> : EqualityComparer<List<TElement>>
    {
        Object hashHelp1 = new Object();
        Object hashHelp2 = new Object();

        public override bool Equals(List<TElement> x, List<TElement> y)
        {
            if (x == null && y == null)
                return true;
            else if (x == null || y == null)
                return false;
            else if (x.SequenceEqual(y))
                return true;
            else
                return false;
        }

        public override int GetHashCode(List<TElement> obj)
        {
            return (hashHelp1, hashHelp2).GetHashCode();
        }
    }

, поэтому я хочу, чтобы два списка считались равными, если их последовательности элементов равны.

Однако, если я пытаюсь создать

ListEqualityComparer<List<int>> LEC = new ListEqualityComparer<List<int>>();
List<List<int>> list = new List<List<int>>(LEC);

Я получаю сообщение об ошибке:

Argument 1: cannot convert from 'MyNamespace.MyFolder.ListEqualityComparer<System.Collections.Generic.List<int>>' to 'System.Collections.Generic.IEnumerable<System.Collections.Generic.List<int>>'.

Что это на самом деле означает?

По моему мнению, программа должна просто заменить TElement на List<int> и go, но, очевидно, здесь происходит нечто иное. Я как-то растерялся, потому что недавно внедрил другой EqualityComparer, и строки

MyStructureEqualityComparer<int, ulong> MSEC= new MyStructureEqualityComparer<int, ulong>();
HashSet<MyStructure<int, ulong>> test = new HashSet<MyStructure<int,ulong>>(MSEC);

были в порядке. Что я делаю не так?

...