На самом деле есть только две причины когда-либо использовать структуру, и это либо для получения семантики типа значения, либо для повышения производительности.
Поскольку структура содержит массив, семантика типа значения не работает должным образом. Когда вы копируете структуру, вы получаете копию count
, но вы получаете только копию ссылки на массив, а не копию элементов в массиве. Поэтому вам придется проявлять особую осторожность при копировании структуры, чтобы не получить ее непоследовательных экземпляров.
Таким образом, единственной оставшейся действительной причиной будет производительность. Для каждого экземпляра ссылочного типа накладываются небольшие накладные расходы, поэтому, если их много, возможно заметное увеличение производительности.
Одна изящная особенность такой структуры заключается в том, что вы можете создать их массив и получить массив пустых списков без инициализации каждого списка:
ItemList<string>[] = new ItemList<string>[42];
Поскольку элементы в массиве заполнены нулями, элемент count
будет равен нулю, а элемент items
будет равен нулю.