static void Main(string[] args) { // [[1,1],2,[1,1]] var nestedIntegerList = new List <NestedInteger> { new NestedIntegerImpl { IsInteger = false, List = new List <NestedInteger> { new NestedIntegerImpl { IsInteger = true, Integer = 1 }, new NestedIntegerImpl { IsInteger = true, Integer = 1 } } }, new NestedIntegerImpl { IsInteger = true, Integer = 2 }, new NestedIntegerImpl { IsInteger = false, List = new List <NestedInteger> { new NestedIntegerImpl { IsInteger = true, Integer = 1 }, new NestedIntegerImpl { IsInteger = true, Integer = 1 } } } }; var iterator = new NestedIterator(nestedIntegerList); while (iterator.HasNext()) { Console.WriteLine(iterator.Next()); } }
public int Next() { if (_nestedList[_curIndex].IsInteger()) { var result = _nestedList[_curIndex].GetInteger(); _curIndex++; return(result); } EnsureSubnestedIterator(); if (_subNestedIterator.HasNext()) { return(_subNestedIterator.Next()); } else { _curIndex++; _subNestedIterator = null; return(Next()); } }