123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- /*-------------------------------------------------------------------------
- * 功能描述: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<Node>
- {
- private List<Node> m_Nodes = new List<Node>();
- public EnumeratorTest()
- {
- for (int i = 0; i < 100; i++)
- {
- m_Nodes.Add(new Node() {Key = i.ToString(), Visited = false});
- }
-
- }
- public IEnumerator<Node> 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();
- }
- }
- }
|