interface Interface1
{
int index { get; set; }
void method();
}
Затем вот такой класс class Class1:Interface1
{
}
В результате запуска вижу 2 ошибки: "App.Class1" не реализует член интерфейса "App.Interface1.method()"
и
"App.Class1" не реализует член интерфейса "App.Interface1.index"
Значит, всё таки нельзя оставлять методы без реализации. SelectedIndexCollection: IList
где только RemoveAt не реализован и всё чудесным образом работает. Разработчики как-то это сделать сумели. public interface IList : ICollection, IEnumerable
{
int Add(object value);
void Clear();
bool Contains(object value);
int IndexOf(object value);
void Insert(int index, object value);
void Remove(object value);
void RemoveAt(int index);
}
public class SelectedIndexCollection : IList
{
public int Add(int itemIndex);
public void Clear();
public bool Contains(int selectedIndex);
public int IndexOf(int selectedIndex);
public void Remove(int itemIndex);
}
Если я сейчас так создам, напишут, что реализация RemoveAt отсутствует в SelectedIndexCollection, наследуемым от IList. void IList.RemoveAt(int index)
{
throw new NotSupportedException();
}
Но "снаружи" ее волшебным образом не видно, почему - пока не могу понять.
Сам IList содержит метод RemoveAt, который, почему-то отсутствует в SelectedIndexCollection. Все остальные есть (Add, this[int index], Clear, Contains, IndexOf, Remove...)
Как такое может быть допустимо? На сколько я знаю, в классе обязательно должны быть описаны ВСЕ методы из родительского интерфейса. Почему в классе отсутствует метод RemoveAt и это не вызывает ошибку при компиляции?