下一页 1 2 3 4
引言:每隔10年左右,编程人员就需要花费大量的时间和精力去学习新的编程技术。在80年代是Unix和C,90年代是Windows和C++,现在又轮到了微软的.NETFramework和C#。尽管需要学习新的技术,但由此带来的好处却远高于付出的劳动。
幸运的是,使用C#和.NET进行的大多数工程的分析和设计与在C++和Windows中没有本质的变化。在本篇文章中,我将介绍如何实现由C++到C#的飞跃。
系列文章:[由C++转向C#需要注意的变化(一)(二)(三)(四)]
IEnumerable界面
再回到上面的例子中。象在普通的数组中那样,使用foreach-loop循环结构就能够很好地打印ListBoxTest类中的字符串,通过在类中实现IEnumerable界面就能实现,这是由foreach-loop循环结构隐性地完成的。在任何支持枚举和foreach-loop循环的类中都可以实现IEnumerable界面。
IEnumerable界面只有一个方法GetEnumerator,其任务是返回一个特别的IEnumerator的实现。从语法的角度来看,Enumerable类能够提供一个IEnumerator。
Figure5ListBoxClass usingSystem; //简化的ListBox控制 publiclearcase/" target="_blank" >cclassListBoxTest { //用字符串初始化该ListBox publicListBoxTest(paramsstring[]initialStrings) { //为字符串分配空间 myStrings=newString[256]; //把字符串拷贝到构造器中 foreach(stringsininitialStrings) { myStrings[myCtr++]=s; } } //在ListBox的末尾添加一个字符串 publicvoidAdd(stringtheString) { myStrings[myCtr++]=theString; } publicstringthis[intindex] { get { if(index<0||index>=myStrings.Length) { //处理有问题的索引 } returnmyStrings[index]; } set { myStrings[index]=value; } } //返回有多少个字符串 publicintGetNumEntries() { returnmyCtr; } privatestring[]myStrings; privateintmyCtr=0; } publicclassTester { |