Если у меня есть список элементов (например List<string> items
) в C#, я могу использовать как:Зачем стоит работать без круглых скобок?
items.Count()
и
items.Count
, чтобы получить общее количество элементов. Есть ли причина, по которой они оба доступны? Почему бы просто не использовать метод .Count()
?
Я заметил, что если я отфильтровать список (и, и в конечном итоге с IEnumerable<string>
):
items.Distinct().Count()
затем .Count()
должен быть использован. Так почему же List<string>
разрешить .Count
?
Это не свойство класса, это свойство интерфейса 'ICollection', посмотрите здесь http://msdn.microsoft.com/pl-pl/library/92t2ye13(v=vs.110).aspx – wudzik
@wudzik how это не свойство класса, если оно определено в интерфейсе :) Интерфейс - это подпись, а не реализация. Следовательно, это свойство класса, которое, как только это происходит, должно выполняться интерфейсом. – Alex
Свойство 'Count' в классе' List 'принадлежит' List 'class. Не имеет значения, реализует ли этот класс 'ICollection ' интерфейс, свойство все еще принадлежит классу. Интерфейс определяет контракт, позвольте мне указать на эти слова: «Если вы (класс) хотите быть помечены как моя (интерфейсная) реализация, у вас должны быть эти требования.» ', Требования (в этом случае свойство Count) принадлежат классу. (Я использую 'List ' и 'ICollection ' как пример, но эта концепция работает для любого случая класса, который реализует интерфейс.) –