首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

IEnumerable枚举之说?小弟我不太理解,求教!

2012-02-14 
IEnumerable枚举之说??我不太理解,求教!!我只知道枚举是用字符的形式如(day.monday)来表示数字(如1)但看书

IEnumerable枚举之说??我不太理解,求教!!
我只知道枚举是用字符的形式如(day.monday)来表示数字(如1)

但看书上讲的IEnumerable枚举功能始终不能理解,作用知道,是用于循环迭代的,但为什么叫枚举

这段代码,枚举在哪里??

C# code
foreach(car c in carArray){response.write(c.name)}


这段代码,枚举在哪里??

[解决办法]
一个Collection要支持foreach方式的遍历,必须实现IEnumerable接口

这里的枚举功能应该是指一个个的列出集合的项
[解决办法]
IEnumerable 和 IEnumerator 是经典的 工厂方法模式
IEnumerator 生产出继承IEnumerable 的实例
也就是 IEnumerable 迭代
在底层要建立一个迭代器
yield 

yield return <expression>;
yield break;
C# code
public class List{    //using System.Collections;    public static IEnumerable Power(int number, int exponent)    {        int counter = 0;        int result = 1;        while (counter++ < exponent)        {            result = result * number;            yield return result;        }    }    static void Main()    {        // Display powers of 2 up to the exponent 8:        foreach (int i in Power(2, 8))        {            Console.Write("{0} ", i);        }    }}/*Output:2 4 8 16 32 64 128 256 */
[解决办法]
当然 .NET 2.0 以后 使用Ilist 反省要好多了

C# code
static IEnumerable<int> WithYield()        {            for (int i = 0; i < 20; i++)            {                Console.WriteLine(i.ToString());                if(i > 2)                    yield return i;            }        }
[解决办法]
引用楼主 aspnet30 的帖子:
我只知道枚举是用字符的形式如(day.monday)来表示数字(如1)

但看书上讲的IEnumerable枚举功能始终不能理解,作用知道,是用于循环迭代的,但为什么叫枚举

这段代码,枚举在哪里??


C# code
foreach(car c in carArray)
{
response.write(c.name)
}




这段代码,枚举在哪里??

[解决办法]
这个枚举是动词...你要理解它去查汉语词典而不是MSDN...
[解决办法]
其实starts_2000 bhtfg538 
都说得差不多了.
我也不多说了!~

不知道楼主不明白什么呢?
[解决办法]
System.Collections.IEnumerator e= orderstatusinfo.GetEnumerator(); 
while (e.MoveNext()) 

Response.Write(e.Current.ToString()) 
}
底层原理就是 上面说的
就是你的代码的 愿意

更底层的 你用汇编看吧
[解决办法]
唉...程序员也得学语文啊...
[解决办法]
探讨
大汗......
我只想知道哪个地方用了枚举,
是e.movenext?

[解决办法]
见过笨的,没见过这么笨的...

这个枚举是动词不是枚举类型...你要理解它去查汉语词典...
[解决办法]
System.Collections.IEnumerator e= orderstatusinfo.GetEnumerator(); 
while (e.MoveNext()) 

Response.Write(e.Current.ToString()) 



 System.Collections.IEnumerator e= orderstatusinfo.GetEnumerator(); 
可以将e看作是一些数据的集合


e.MoveNext()作用是访问集合中的单个数据

 while (e.MoveNext()) 的作用就是顺序访问集合中的每个数据,直到数据的最后一个







[解决办法]

探讨
唉...程序员也得学语文啊...

[解决办法]
简直服了...你不会去查查汉语词典啊...

枚举就是一一列举...白话就是挨个儿给我拉出来溜溜...可枚举的意思就是能够被挨个拉出来溜...
[解决办法]
这个枚举不要和enum那个搞混了
[解决办法]
bhtfg538 苦了你了。哈哈。
开心的一帖。。
[解决办法]
枚举 == 遍历

while()... 这里就对集合遍历了.

热点排行