二級輔導(dǎo):由C++轉(zhuǎn)向C#需要注意的變化(三)

字號:

IEnumerable界面
    再回到上面的例子中。象在普通的數(shù)組中那樣,使用foreach-loop循環(huán)結(jié)構(gòu)就能夠很好地打印ListBoxTest類中的字符串,通過在類中實現(xiàn)IEnumerable界面就能實現(xiàn),這是由foreach-loop循環(huán)結(jié)構(gòu)隱性地完成的。在任何支持枚舉和foreach-loop循環(huán)的類中都可以實現(xiàn)IEnumerable界面。
    IEnumerable界面只有一個方法GetEnumerator,其任務(wù)是返回一個特別的IEnumerator的實現(xiàn)。從語法的角度來看,Enumerable類能夠提供一個IEnumerator。
    Figure5ListBoxClass
    usingSystem;
    //簡化的ListBox控制
    publicclassListBoxTest
    {
    //用字符串初始化該ListBox
    publicListBoxTest(paramsstring[]initialStrings)
    {
    //為字符串分配空間
    myStrings=newString[256];
    //把字符串拷貝到構(gòu)造器中
    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
    {