Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /// <summary>
- /// 無限リスト
- /// </summary>
- /// <typeparam name="T"></typeparam>
- class InfiniteList<T> : IEnumerable<T>
- {
- private readonly List<T> _list;
- public InfiniteList(IEnumerable<T> source)
- {
- _list = source.ToList();
- }
- public IEnumerator<T> GetEnumerator()
- {
- while (true)
- {
- foreach (T val in _list)
- {
- yield return val;
- }
- }
- }
- IEnumerator IEnumerable.GetEnumerator()
- {
- return this.GetEnumerator();
- }
- }
- class Program
- {
- static void Main(string[] args)
- {
- // 繰り返しな無限リスト
- int[] a12345 = new[] { 1, 2, 3, 4, 5 };
- InfiniteList<int> infiniteInt = new InfiniteList<int>(a12345);
- foreach(var x in infiniteInt.Take(20))
- {
- Console.WriteLine(x);
- }
- // ランダムな無限リスト
- var rnd = new Random();
- Func<int>[] r = new Func<int>[] { () => rnd.Next() };
- InfiniteList<Func<int>> infiniteFunc = new InfiniteList<Func<int>>(r);
- foreach(var x in infiniteFunc.Take(20))
- {
- Console.WriteLine(x());
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement