Рассмотрим фрагмент кода.
IList<String> obj=new List<string>();
IEnumerable<Object> obj1 = obj;
Но если я пишу ICollection<Object> obj2 = obj;
, он бросает мне ошибку времени компиляции.
Невозможно неявно преобразовать тип '
System.Collections.Generic.IList<string>
' в 'System.Collections.Generic.ICollection<object>
'.
Почему это поведение, так как List<T>
реализует как IEnumerable<T>
, так и ICollection<T>
, а также IList<T>
определяется как
public interface IList<T> : ICollection<T>, IEnumerable<T>, IEnumerable
{
T this[int index] { get; set; }
int IndexOf(T item);
void Insert(int index, T item);
void RemoveAt(int index);
}