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

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

  • Свойство Item[n] возвращает n-е число Фибоначчи.
  • Свойство IsReadOnly возвращает значение true.
  • Методы IndexOf и Contains мы можем реализовать достаточно легко, потому что последовательность Фибоначчи возрастает -, чтобы проверить, является ли число m числом Фибоначчи, нам нужно только вычислить конечную последовательность чисел Фибоначчи до m.
  • Метод GetEnumerator ()работает правильно

Теперь мы реализовали все методы, ожидаемые от IList только для чтения -, кроме Count ().

Это круто или злоупотребление IList?


Числа Фибоначчи быстро становятся непрактично большими (, следовательно, IListвыше ). Ограниченная бесконечная последовательность могла бы быть более разумной, она могла бы реализовать IListили IList.

Приложение II :Последовательность Фибоначчи могла быть плохим примером,поскольку вычисление удаленных значений требует больших затрат -, чтобы найти n-е значение, необходимо вычислить все более ранние значения. Таким образом, как сказал Мошмондор, можно также сделать его IEnumerable и использовать .ElementAt. Однако существуют и другие последовательности, в которых можно быстро вычислить отдаленные значения без вычисления более ранних значений . (Удивительно, что цифры числа пи являются такой последовательностью). Эти последовательности более «листовые», они действительно поддерживают произвольный доступ.

Редактировать :Никто -не возражает против бесконечных IEnumerables. Как они относятся к графу ()?

15
задан Colonel Panic 12 July 2012 в 00:22
поделиться