Реализация интерфейса C # .NET на нескольких уровнях - PullRequest
0 голосов
/ 01 мая 2018

Я обнаружил, что копаюсь в System.Collections.Generic при использовании BindingList. Я не понимаю что-то о следующих реализациях интерфейса:

public interface ICollection<T> : IEnumerable<T>, IEnumerable
public interface ISet<T> : ICollection<T>, IEnumerable<T>, IEnumerable

Почему

ISet<T> 

Реализовать

IEnumerable<T>, IEnumerable 

когда ICollection уже делает? Не будет ли приемлемо следующее?

public interface ICollection<T> : IEnumerable<T>, IEnumerable
public interface ISet<T> : ICollection<T>

Любая помощь в понимании этого очень ценится. Спасибо!

1 Ответ

0 голосов
/ 01 мая 2018

Я предполагаю, что у вас есть объявления интерфейса от MSDN или другого источника документации. Хотя верно, что ISet<T> не обязательно явно реализовывать IEnumberable<T> и IEnumberable, как вы можете видеть в справочной реализации ...

public interface ISet<T> : ICollection<T> 

... документация по-прежнему содержит полный список для удобства разработчика, чтобы они знали, какие интерфейсы реализованы ISet<T>, даже если только через наследование. Прохождение, возможно, длинной иерархии наследования, вероятно, не увеличит преимущества такой документации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...