Часто предлагая методы, которые принимают массив, можно оптимизировать, чтобы принимать более общие классы, которые являются как IEnumerable
, так и требуют Count
или Length
.Какой тип параметра предоставить IEnumerable и имеет счет?
Пример:
public static T NextObject<T>(this Random random, T[] array)
{
return array[random.Next(array.Length)];
}
Здесь я использую Array
, чтобы получить конкретный элемент, зная количество элементов. Какой класс оптимален для этого в общем?
- IList
- ICollection - также имеет
Count
- другой интерфейс или класс или набор различных интерфейсов?
Я думаю , IEnumerable
не может быть хорошей идеей, потому что Count()
может вызвать побочные эффекты на производительность, если основной Перечислитель является более сложным.
Я предлагаю использовать 'ICollection', но я думаю, что это немного * основанное на мнениях *. –
MarcinJuraszek
'ICollection' не имеет индексатора. Я думаю, что и это, и 'Array' как две перегрузки могут * (не уверены) * охватывать все типы. Я не думаю, что это мнение основано, потому что вопрос в основном охватывает все распространенные типы с наименьшими перегрузками. –
bytecode77
Почему нет простого списка? –