正在阅读:由C++转向C#需要注意的变化(三)由C++转向C#需要注意的变化(三)

2004-11-18 15:52 出处:CSDN 作者:AustinLei 责任编辑:linjixiong

  引言:每隔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控制
  publicclassListBoxTest
  {
  //用字符串初始化该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
  {


察看评论详细内容 我要发表评论
作者笔名 简短内容 发表时间
:

键盘也能翻页,试试“← →”键

关注我们

最新资讯离线随时看 聊天吐槽赢奖品