Должен ли IList быть конечным?

Должны .NETIList быть конечным? Предположим, я пишу класс FibonacciList, реализующийIList<BigInteger>

The property Item[n] returns the nth Fibonacci number. The property IsReadOnly returns true. The methods IndexOf and Contains we can implement easily enough because the Fibonacci sequence is increasing - to test if the number m is Fibonacci, we need only to compute the finite sequence of Fibonacci numbers up to m. The method GetEnumerator() doing the right thing

Теперь мы реализовали все методы, ожидаемые от 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 ()?

Ответы на вопрос(7)

Ваш ответ на вопрос