Где находится список <T>.IsReadOnly? - PullRequest
2 голосов
/ 10 февраля 2012

В .Net Framework List<T> реализует интерфейс ICollection<T>. Однако при просмотре класса List в Visual Studio я не вижу свойства IsReadOnly, которое предположительно находится в интерфейсе ICollection<T>.

Как класс может реализовать интерфейс ... но на самом деле не реализовать его?

Ответы [ 3 ]

5 голосов
/ 10 февраля 2012

Используется явная реализация интерфейса . Например:

public interface IFoo 
{
    void Bar();
}

public Foo : IFoo
{
    // Note the lack of public here
    void IFoo.Bar() {}
}
2 голосов
/ 10 февраля 2012

IsReadOnly указан в разделе «Явные реализации интерфейса» документации .

1 голос
/ 10 февраля 2012

Это сделано с использованием явной реализации интерфейса. Вы можете увидеть реализацию только тогда, когда вы используете список в качестве определенного интерфейса:

List<int> x = new List<int>();

bool b1 = x.IsReadOnly; // not accessible

ICollection<T> y = x;

bool b2 = y.IsReadOnly; // accessible
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...