您好,欢迎来到爱够旅游网。
搜索
您的当前位置:首页C#中的foreach

C#中的foreach

来源:爱够旅游网
C#中的foreach

在编写C#代码时,我们会发现使用foreach循环会比使用for循环方便,不需要进行数据类型的强制转换,不需要使用下标!通过帮助文档的查看可知,如果要对一个对象使用foreach进行循环的话则此对象的类型必须拥有GetEnumerator方法,此方法是在IEnumerable接口下的,但是否实现此接口无所谓!GetEnumerator方法需要返回一个IEnumerator的实例,因为在进行foreach遍历时会使用到一个属性:Current和一个方法:MoveNext!以下是带有注释的源代码:usingSystem;usingSystem.Collections;namespaceConTest01{///

///Class1的摘要说明。///classClass1{//////应用程序的主入口点。///[STAThread]staticvoidMain(string[]args){Personsp=newPersons(\"jack\foreach(stringsinp){Console.WriteLine(s);}}}publicclassPersons{publicstring[]m_Names;publicPersons(paramsstring[]Names){this.m_Names=newstring[Names.Length];Names.CopyTo(this.m_Names,0);}publicstringthis[intindex]{get{returnthis.m_Names[index];}set{this.m_Names[index]=value;}}#regionIEnumerable成员//如果此类需要被foreach遍历则必须拥有此方法,至于是否实现IEnumerable接口倒是无所谓publicIEnumeratorGetEnumerator(){//返回一个IEnumerator的实例returnnewPersonsEnumerator(this);}#endregion}publicclassPersonsEnumerator:IEnumerator{privateintindex=-1;privatePersonsP;publicPersonsEnumerator(PersonsP){this.P=P;}#regionIEnumerator成员//重置方法publicvoidReset(){this.index=-1;}//得到当前值的属性,是只读,因此在进行foreach遍历时不能修改遍历到的元素内容publicobjectCurrent{get{returnthis.P[index];}}//将当前实例内部的索引前进一位,并判断前进后是否还有元素publicboolMoveNext(){inttempIndex=++this.index;if(tempIndex>=this.P.m_Names.Length){returnfalse;}else{returntrue;}}#endregion}

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- igbc.cn 版权所有 湘ICP备2023023988号-5

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务