for和foreach有本质的区别
foreach的具体过程是由目标对象控制的
所以并非集合内容更改了就不可以使用foreach
而是Array和Collection对象如此实现了它而已
你却可以完全按照自己的想法去实现这一过程
也许你可以去翻一下Gof的Visitor模式,foreach看起来就是它的简化版本
我们应该把foreach当作一种设计模式而不是简单的一个循环语句去理解
目前C#里的foreach是以IEnumerable的方式去实现,这只是保留COM的实现方式,这种方式我认为其实不太便于理解
我想如果存在一个IForEachable其成员为ForEach(..),这样可能更能让人容易明白