Переопределить.NET универсальный <MyType>.Contains списка (MyTypeInstance)?

Нет, особого режима нет. При условии, что у вас включены прерывания с правильными приоритетами, ядро ​​будет вытеснять (требуя прибытия с более высоким приоритетом во время суммирования) или цепочку хвостов (с тем же или более низким приоритетом) всякий раз, когда приходит второе прерывание после обработки первого. ]

Отключение этого поведения не принесет никакой пользы, регистры приоритетов уже дают вам полный контроль.

7
задан Can Berk Güder 8 April 2009 в 08:34
поделиться

5 ответов

Чтобы создать свою собственную реализацию Contains, вы можете создать класс, реализующий интерфейс IList. Таким образом ваш класс будет выглядеть как IList. У вас может быть реальный список внутри, чтобы делать стандартные вещи.

class MyTypeList : IList<MyType>
{
    private List<MyType> internalList = new ...;

    public bool Contains(MyType instance)
    {

    }

    ....
}
5
ответ дан 6 December 2019 в 14:09
поделиться

Вам необходимо переопределить Equals и GetHashCode в вашем классе ([ MyType ).

2
ответ дан 6 December 2019 в 14:09
поделиться

Depending on what specific needs you have in your override you might use Linq expression for doing that:

list.Any(x => x.Name.Equals("asdas", .....)) // whatever comparison you need

You can then wrap it in an extension method for convenience.

1
ответ дан 6 December 2019 в 14:09
поделиться

Если вы реализуете пользовательский тип equals, будет работать функция содержимого List

0
ответ дан 6 December 2019 в 14:09
поделиться

List uses EqualityComparer.Default to do comparisons; this checks first to see if your object implements IEquatable; otherwise is uses object.Equals.

So; the easiest thing to do is to override Equals (always update GetHashCode to match the logic in Equals). Alternatively, use LINQ instead:

bool hasValue = list.Any(x => x.Foo == someValue);
7
ответ дан 6 December 2019 в 14:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: