Список IList в базовом классе коллекции?
Вопрос в отношении базового класса коллекции, который реализует странное свойство:
protected IList List { get; }
1) Что такое Ilist List в базовом классе коллекции?...
2) Он даже не инициализирован... как к нему можно получить доступ...
3) Когда использовать этот список?
3 ответа
1) IList - это интерфейс, любой класс, являющийся реализацией IList, может быть возвращен свойством List вашего класса. Другими словами, вы только знаете, что он может выполнять спецификацию интерфейса IList.
2) Вы не можете, вам нужно инициализировать свой класс, прежде чем вы сможете получить список свойств из класса. IList инициализируется как класс, который реализует интерфейс IList.
3) Это зависит от спецификации класса. Я предполагаю, что он возвращает элементы в текущем списке как IList.
На самом деле, внутри CollectionBase
класс, код выглядит следующим образом:
protected IList List
{
get
{
return this;
}
}
Таким образом, он может быть скомпилирован без ошибок.
Когда производные классы или CollectionBase
сам позвони List
свойство, оно будет возвращать экземпляр списка (this
). Если вы разрабатываете подкласс CollectionBase
вы можете использовать это свойство везде, где хотите получить экземпляр типа IList
,
Этот код даже не скомпилируется. Автоматически реализованные свойства должны иметь как get, так и set accessors.
Он скомпилируется, если он находится внутри абстрактного базового класса и помечен абстрактным ключевым словом:
protected abstract IList List { get; }
Затем это зависит от производных классов для реализации метода получения этого свойства.