Я делаю прототип приложения, и для этого я разработал класс, который ведет себя как бесконечный список циклов. То есть, если мой внутренний список содержит 100 значений, когда я запрашиваю 101-е значение, я получаю первый, 102-й дает второй и т. Д., Повторяя.Как заставить класс InfiniteLoopingList реализовать IEnumerable?
Так что я хотел бы написать следующий код:
var slice = loopingListInstance.Skip(123).Take(5);
И для этого мне нужно реализовать IEnumerable подходящий, как я понимаю.
Вот мой текущий код:
public class InfiniteLoopingList : IEnumerable<double>
{
double[] _values = File.ReadLines(@"c:\file.txt")
.Select(s => double.Parse(s, CultureInfo.InvariantCulture))
.ToArray();
int _size;
public InfiniteLoopingList()
{
_size = _values.Length;
}
public double this[int i]
{
get { return _values[i % _size]; }
set { _values[i % _size] = value; }
}
public IEnumerator<double> GetEnumerator()
{
return this.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
// ???? now what ?? :(
}
}
Это похоже на то, что мне нужно. Собираюсь проверить его после обеда и вернуться, чтобы опубликовать некоторые отзывы. Благодаря! – heltonbiker
@oleksii Yup, вы правы, это не совсем бесконечный цикл. Но я сомневаюсь, что кому-то действительно нужна бесконечная последовательность. Я обновил ответ, спасибо. – Dmitry