Я наткнулся на следующий код:
var collection = new Collection<string>();
Я не видел, чтобы класс Collection использовался слишком много, и не может найти слишком много информации о его назначении. Если посмотреть на источник .NET Framework, это скорее всего оболочка вокруг списка, поскольку она хранит поле List List. Его конструктор выглядит следующим образом:
public Collection()
{
this.items = (IList<T>) new List<T>();
}
И он также реализует IList. Таким образом, вы можете объявить коллекцию как:
IList<string> collection = new Collection<string>();
Что для меня функционально эквивалентно созданию списка вместо:
IList<string> collection = new List<string>();
Итак, когда вы когда-нибудь захотите использовать его над списком в своем собственном коде? Я вижу, что это базовый класс для других коллекций .NET, но почему они включают это как публичный конкретный (в отличие от внутреннего и/или абстрактного)?
Что касается комментариев вокруг возможных дубликатов, ответы на связанные вопросы, похоже, говорят о том, что класс Collection предполагается использовать в качестве базового класса. Что я действительно спрашиваю, что другое:
- Если вы используете в своем собственном коде, почему бы не использовать List вместо базового класса?
- Действительно ли имеет смысл создать новую коллекцию в ваш собственный код вместо списка?
- Если это действительно только, предоставляемый как базовый класс, почему он не абстрактный?