2016-01-12 3 views
0

Это как выглядит IList<T> общий интерфейсПочему IList <T> расширяет оба IEnumerable <T> и IEnumerable интерфейсы?

public interface IList<T> : ICollection<T>, IEnumerable<T>, IEnumerable 
{ 
    T this[int index] { get; set; } 

    int IndexOf(T item); 

    void RemoveAt(int index); 
} 

Почему IList<T> распространяется как IEnumerable<T> и IEnumerable интерфейсы?

IEnumerable<T> уже есть IEnumerable. То же самое и с интерфейсом ICollection<T>.

+0

Фактически это [не было] (https://github.com/dotnet/coreclr/blob/master/src/mscorlib/src/System/Collections/Generic/IList.cs). MSDN - это просто справочная информация, и эти интерфейсы добавлены только для ясности. –

+1

Возможно, просто для того, чтобы сделать это явным для кого-то, кто смотрит на объявление? –

+0

Возможно, опечатка на странице MSDN: http://referencesource.microsoft.com/#mscorlib/system/collections/generic/ilist.cs – Dennis

ответ

1

На самом деле это не так. Вы можете увидеть фактическое заявление на Github:

[TypeDependencyAttribute("System.SZArrayHelper")] 
#if CONTRACTS_FULL 
[ContractClass(typeof(IListContract<>))] 
#endif // CONTRACTS_FULL 
public interface IList<T> : ICollection<T> 
{ 
    T this[int index] { 
     get; 
     set; 
    } 

    int IndexOf(T item); 
    void Insert(int index, T item); 
    void RemoveAt(int index); 
} 

MSDN просто справочная информация и это интерфейсы, которые добавлены только для ясности.

+0

Я предпочитаю [источник ссылки MS] (http://referencesource.microsoft.com/# mscorlib/система/коллекция/общий/ilist.cs, b19f71a84062554b). –

+0

Я действительно ищу интерфейс в visual studio .Net framework 4.6? Здесь также добавлено для ясности? – Raskolnikov

+1

@ Раскольников: ваш вопрос был закрыт как [дубликат] (http://stackoverflow.com/questions/4817369/why-does-does-it-really-listt-implement-all-these-interfaces-not-just-ilis) сам Э. Липперт. Стоит это прочитать. –

Смежные вопросы