public bool HasNext() { if (_curIndex >= _nestedList.Count) { return(false); } if (_nestedList[_curIndex].IsInteger()) { return(true); } else { EnsureSubnestedIterator(); if (!_subNestedIterator.HasNext()) { _curIndex++; _subNestedIterator = null; } else { return(true); } return(HasNext()); } }
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()); } }