interface
 
自定义类型如果要使用foreach,需要定义一个名为GetEnumberator()的方法。由IEnumberator接口类型来定制。这个方法通常是交给保存子对象的内部成员。也可以使用yield return来实现。
InBlock.gif public class Garage    
InBlock.gif    {
InBlock.gif     private Car[] carArray = new Car[4];
InBlock.gif..     .
InBlock.gif     // 迭代器方法。    
InBlock.gif     public IEnumerator GetEnumerator()
InBlock.gif {    
InBlock.gif         foreach (Car c in carArray)    
InBlock.gif{        
InBlock.gif     yield return c;    
InBlock.gif    }    
InBlock.gif }    
InBlock.gif}    
InBlock.gif
InBlock.gif public IEnumerable GetTheCars( bool ReturnRevesed)    
InBlock.gif    {
InBlock.gif     // 逆序返回项。    
InBlock.gif     if (ReturnRevesed)    
InBlock.gif     {        
InBlock.gif                         for ( int i = carArray.Length; i != 0; i--)
InBlock.gif                        {        
InBlock.gif                            yield return carArray[i-1];    
InBlock.gif                        }    
InBlock.gif                    }        
InBlock.gif                 else    
InBlock.gif                    {    
InBlock.gif // 按顺序返回数组中的项。
InBlock.gif                         foreach (Car c in carArray)    
InBlock.gif                        {    
InBlock.gif                            yield return c;            
InBlock.gif        
InBlock.gif                        }    
InBlock.gif                }    
InBlock.gif}