本文实例讲述了C#中foreach原理以及模拟的实现方法,分享给大家供大家参考。具体如下:
public class Person:IEnumerable //定义一个person类 并且 实现IEnumerable 接口 (或者不用实现此接口 直接在类 //里面写个GetEnumerator()方法) { string[] names = { "小杨", "科比布莱恩特", "凯文杜兰特", "卡门安东尼" }; //在Person类里面定义一个字符串数组,以便用来模仿对象的索引访问public int Count { get { return names.Length; } } //可以通过对象访问此属性 public string this[int index] //定义一个索引器 { get { return names[index]; } }
public IEnumerator GetEnumerator() { return new MyClass(names); //实际上通过此方法就是返回一个可以实现循环的类的对象 // 用他的对象来移动索引 } }
public class MyClass :IEnumerator { public MyClass(string[] names) //一个参数的构造函数,用来和要遍历的类的进行关联 { name = names; } private string[] name; //用此字段来存放接收过来的数组 int index = -1; public object Current //获取当前索引的元素的值 { get { if (index<0) //准备状态是-1,开始循环了在MoveNext中加1 { return null; } else { return name[index]; } } } public bool MoveNext() { ++index; //每调用此方法就将索引往下+1 if (index<name.Length) { return true; } else { return false; } } public void Reset() { index=-1; } }
在主方法里面:
class Program { static void Main(string[] args) { Person p = new Person(); //for (int i = 0; i < p.Count; i++) //{ // Console.WriteLine(p[i]); //} foreach (string item in p) { Console.WriteLine(item); } //实际执行foreach就相当于执行下面几句话: Console.WriteLine("=================================================="); IEnumerator p1 = p.GetEnumerator(); while (p1.MoveNext()) { string str=(string)p1.Current; Console.WriteLine(str); } Console.ReadKey(); } }
希望本文所述对大家的C#程序设计有所帮助。
本文向大家介绍C++中string的模拟实现,包括了C++中string的模拟实现的使用技巧和注意事项,需要的朋友参考一下 c++中的string类可以实现字符串对象的一系列操作,如下图就是从cplusplus上截取的string的一部分功能: 接下来我就简单模拟几个函数实现 首先,我们要给出完整的string类,包括构造函数,析构函数,私有成员char* str 并且在类内声明要实现的函数(
本文向大家介绍什么是依赖关系反转原理,以及如何在C#中实现?,包括了什么是依赖关系反转原理,以及如何在C#中实现?的使用技巧和注意事项,需要的朋友参考一下 高级模块不应依赖于低级模块。两者都应该依赖抽象,抽象不应该依赖细节。细节应取决于抽象。此原则主要涉及减少代码模块之间的依赖性。 示例 依赖反转之前的代码 依赖反转后的代码
主要内容:1 WeakHashMap 的原理,2 tomcat的ConcurrentCache详细介绍了弱键集合WeakHashMap 的原理,以及tomcat中的ConcurrentCache的原理。 1 WeakHashMap 的原理 基于哈希表的Map接口实现,支持null键和值,但是WeakHashMap具有弱键,可用来实现缓存存储,在进行GC的时候会自动回收键值对。 WeakHashMap 的 Entry 节点继承自 WeakReference。put方法插入键值对时,创建Ent
本文向大家介绍前端分页功能的实现以及原理(jQuery),包括了前端分页功能的实现以及原理(jQuery)的使用技巧和注意事项,需要的朋友参考一下 分页场景常见于电商网站,比如说淘宝天猫的评论区,分页功能一般是后台实现,前端请求就完事了。现闲得无聊,就写出来玩玩,只实现功能,并未封装。 基于jq实现分页功能,大致分为以下几步: 定义一个分页方法,可多次调用 参数设置 请求数据页面跳转方法 创建非数
本文向大家介绍布隆过滤器的原理以及java 简单实现,包括了布隆过滤器的原理以及java 简单实现的使用技巧和注意事项,需要的朋友参考一下 一.布隆过滤器 布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率和删除困
本文向大家介绍java AOP原理以及实例用法总结,包括了java AOP原理以及实例用法总结的使用技巧和注意事项,需要的朋友参考一下 AOP : 面向切面编程 在程序设计中,我们需要满足高耦合低内聚,所以编程需满足六大原则,一个法则. AOP面向切面编程正是为了满足这些原则的一种编程思想. 一.装饰者模式: 当我们需要给对象增加功能时,为了满足单一职责原则,可利用装饰者模式编程,创建一个类用来装