C# 迭代器
c# 的迭代器模式是通过 IEnumerator 和 IEnumerable 接口来实现的
c# 实现迭代器示例
public class CharList : IEnumerable { public string TargetStr { get; set; } public CharList(string str) { this.TargetStr = str; } /// <summary> /// 获取迭代器 /// </summary> /// <returns></returns> public IEnumerator GetEnumerator() { return new CharIterator(this.TargetStr); } } /// <summary> /// 实现IEnumerator接口 /// </summary> public class CharIterator : IEnumerator { //引用要遍历的字符串 public string TargetStr { get; set; } //指出当前遍历的位置 public int position { get; set; } public CharIterator(string targetStr) { this.TargetStr = targetStr; this.position = this.TargetStr.Length; } public object Current { get { if (this.position == -1 || this.position == this.TargetStr.Length) { throw new InvalidOperationException(); } return this.TargetStr[this.position]; } } public bool MoveNext() { //如果满足继续遍历的条件,设置position的值 if (this.position != -1) { this.position--; } return this.position > -1; } public void Reset() { this.position = this.TargetStr.Length; } }
语法糖模式:
public class StringList : IEnumerable { public string[] Count = new string[] { "1", "2", "3" }; public IEnumerator GetEnumerator() { for (int i = 0; i < Count.Length; i++) { yield return Count[i]; } } } 调用: var arr = new StringList(); foreach (string item in arr) { Console.Write(item); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2021-05-13 原生js 操作class