Реализация класса массива в С#

Переходя к деталям реализации, я вижу реализацию класса Array как

public abstract class Array : ICloneable, IList, ICollection, IEnumerable, IStructuralComparable, IStructuralEquatable

Реализация интерфейса IList читается как

public interface IList : ICollection, IEnumerable

Мой вопрос в том, что класс Array автоматически реализует ICollection и IEnumerable момент, когда он реализует IList? Почему они реализованы явно?

Ответ 1

Реализация массива:

Array : ICloneable, IList, IStructuralComparable, IStructuralEquatable

Взгляните на этот источник в здесь

Возможно, вы взглянули на MSDN, который просто делает документ более четким.

Ответ 2

interface I
{
    void M();
}

class A : I
{
    void I.M()
    {

    }
}

class B : A
{
    void I.M() // Compilation error
    {

    }
}

Вы можете написать I i = new B(), но вы не можете явно реализовать M в B. Для этого вам нужно B явно реализовать I:

class B : A, I
{
    void I.M() // Is ok now.
    {

    }
}