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
{
再回到上面的例子中。象在普通的數(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
{

