Кто-нибудь знает о классе .NET для инкапсуляции коллекции объектов (строк в моем случае), которые позволяют читать, искать и т. Д. В стиле Stream. По сути, мне нужен список с методом GetNext, который вернет следующий объект и обновит текущая позиция чтения.

Это несложно реализовать (возможно, с помощью методов расширения), но я хотел использовать любые уже разработанные классы .NET, которые, возможно, уже существуют.

РЕДАКТИРОВАТЬ: я хочу добавить, что данные всегда будут доступны в прямом порядке (т.е.нет необходимости искать конкретную позицию) или просто сбросить до нуля. Так что похоже, что IEnumerator может работать.

2
Brian Triplett 12 Янв 2010 в 20:10

3 ответа

Лучший ответ

Это то, что делает IEnumerable / IEnumerator. Просто вызовите GetEnumerator () в своем списке и используйте элементы IEnumerator Current / MoveNext().

Если вам нужна дополнительная функциональность с точки зрения перемещения указателя текущей записи, вы можете найти то, что вам нужно, просто используя метод расширения Take(). Реализовать IEnumerable, который поддерживает внутреннее состояние, также очень просто.

5
codekaizen 12 Янв 2010 в 20:18
Это сработало. Отличная идея. Я даже не рассматривал возможность просто использовать Enumerator для выполнения этой задачи.
 – 
Brian Triplett
12 Янв 2010 в 20:37

Всегда есть IEnumerable. Конечно, ограничение в том, что вы не можете искать назад.

2
Joel Coehoorn 12 Янв 2010 в 20:18

BinaryReader / < b> BinaryWriter имеет функции для сериализация всех примитивных типов. Если вы знаете, какого типа ожидать, это должно сработать для вас. Искать будет сложно, если вы ожидаете, что он будет поддерживать границы строк, но он отлично подойдет для прямого чтения всех примитивов.

-1
Michael Bray 12 Янв 2010 в 20:19
Плакат просто хочет объекты, а не данные.
 – 
codekaizen
12 Янв 2010 в 20:18