/*------------------------------------------------------------------------- * 功能描述:EnumeratorTest * 作者:xulisong * 创建时间: 2019/5/6 17:17:04 * 版本号:v1.0 * -------------------------------------------------------------------------*/ using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Test.Enumerator { public class Node { public string Key { get; set; } public bool Visited { get; set; } } public class EnumeratorTest:IEnumerable { private List m_Nodes = new List(); public EnumeratorTest() { for (int i = 0; i < 100; i++) { m_Nodes.Add(new Node() {Key = i.ToString(), Visited = false}); } } public IEnumerator GetEnumerator() { //迭代返回 if (m_Nodes == null|| !m_Nodes.Any()) yield break; try { foreach (var node in m_Nodes) { node.Visited = true; yield return node; } } finally { m_Nodes.ForEach(v => v.Visited = false); } } IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } } }