Должен ли IList быть конечным?
Должны .NETIList быть конечным? Предположим, я пишу класс FibonacciList, реализующийIList<BigInteger>
Теперь мы реализовали все методы, ожидаемые от ILists только для чтения, кроме Count ().
Это круто, или злоупотребление IList?
Числа Фибоначчи быстро становятся непрактично большими (отсюдаIList<BigInteger>
выше) . Ограниченная бесконечная последовательность может быть более разумной, она может реализоватьIList<long>
или жеIList<double>
.
Приложение II: Последовательность Фибоначчи могла быть плохим примером, потому что вычисление удаленных значений стоит дорого - чтобы найти n-е значение, нужно вычислить все более ранние значения. Таким образом, как сказал Mo? Mondor, можно также сделать его IEnumerable и использовать.ElementAt
, тем не мениеthere exist other sequences where one can compute distant values quickly without computing earlier values, (На удивлениецифры числа пи являются такой последовательностью). Эти последовательности являются более «списочными», они действительно поддерживают произвольный доступ.
Редактировать: никто не спорит против бесконечных IEnumerables. Как они обрабатывают Count ()?