Ответ 1
Реализация массива:
Array : ICloneable, IList, IStructuralComparable, IStructuralEquatable
Взгляните на этот источник в здесь
Возможно, вы взглянули на MSDN, который просто делает документ более четким.
Переходя к деталям реализации, я вижу реализацию класса Array
как
public abstract class Array : ICloneable, IList, ICollection, IEnumerable, IStructuralComparable, IStructuralEquatable
Реализация интерфейса IList читается как
public interface IList : ICollection, IEnumerable
Мой вопрос в том, что класс Array
автоматически реализует ICollection
и IEnumerable
момент, когда он реализует IList
? Почему они реализованы явно?
Реализация массива:
Array : ICloneable, IList, IStructuralComparable, IStructuralEquatable
Взгляните на этот источник в здесь
Возможно, вы взглянули на MSDN, который просто делает документ более четким.
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.
{
}
}