那位达人能用简单通俗的语言或例子讲一下IEnumerable接口及其应用,写

downsome 2004-04-09 03:25:15
那位达人能用简单通俗的语言或例子讲一下IEnumerable接口及其应用,看了一些文章始终没搞懂,谢了
...全文
69 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
一大梨 2004-04-13
  • 打赏
  • 举报
回复
……
marvelstack 2004-04-13
  • 打赏
  • 举报
回复
不错
huangsuipeng 2004-04-09
  • 打赏
  • 举报
回复
顶一下
HNU 2004-04-09
  • 打赏
  • 举报
回复

save
dhz123 2004-04-09
  • 打赏
  • 举报
回复
public class mySon:IEnumerator,IEnumerable
{
private int what;
private int whatMax;
private string[] sons;
public mySon(string[] sons)
{
what=0;
whatMax=sons.length;
this.sons=sons.Clone();
}
public IEnumerator GetEnumerator()
{
return this;
}
public object Current
{
get
{ return sons[what]; }
public bool MoveNext()
{
if(what<whatMax)
{
what++;
return true;
}
return false;
}
public void Reset ()
{
what=0;
}
}
edobnet 2004-04-09
  • 打赏
  • 举报
回复
IEnumerator 是所有枚举数的基接口。

枚举数只允许读取集合中的数据。枚举数无法用于修改基础集合。

最初,枚举数被定位于集合中第一个元素的前面。Reset 也将枚举数返回到此位置。在此位置,调用 Current 会引发异常。因此,在读取 Current 的值之前,必须调用 MoveNext 将枚举数提前到集合的第一个元素。

在调用 MoveNext 或 Reset 之前,Current 返回同一对象。MoveNext 将 Current 设置为下一个元素。

在传递到集合的末尾之后,枚举数放在集合中最后一个元素后面,且调用 MoveNext 会返回 false。如果最后一次调用 MoveNext 返回 false,则调用 Current 会引发异常。若要再次将 Current 设置为集合的第一个元素,可以调用 Reset,然后再调用 MoveNext。

只要集合保持不变,枚举数就将保持有效。如果对集合进行了更改(例如添加、修改或删除元素),则该枚举数将失效且不可恢复,并且下一次对 MoveNext 或 Reset 的调用将引发 InvalidOperationException。如果在 MoveNext 和 Current 之间修改集合,那么即使枚举数已经无效,Current 也将返回它所设置成的元素。

枚举数没有对集合的独占访问权;因此,枚举一个集合在本质上不是一个线程安全的过程。甚至在对集合进行同步处理时,其他线程仍可以修改该集合,这会导致枚举数引发异常。若要在枚举过程中保证线程安全,可以在整个枚举过程中锁定集合,或者捕捉由于其他线程进行的更改而引发的异常。

downsome 2004-04-09
  • 打赏
  • 举报
回复
不是2003所以查不到,原来看过一些,始终没看懂
kanshangren 2004-04-09
  • 打赏
  • 举报
回复
查看CSDN
ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfSystemCollectionsIEnumerableClassTopic.htm

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧