c foreach枚举器(枚举typedef)

要是自己的类支持foreach ,必须在类中必须有GetEnumerator方法,该方法返回的是一个IEnumerator类型的枚举器;

public class MyStruct   
   {  
       public string sName = new string { "张三", "李四", "王五" };  
       public IEnumerator GetEnumerator  
       {  
         return  new MyStructEnumerator(sName);  
       }  
   }    

所以自己得写一个类类继承IEnumerator接口,并在类中实现IEnumerator接口;

public class MyStructEnumerator : IEnumerator  
    {  
//要遍历的对象
        private string sList;  
        public MyStructEnumerator(string[] get)  
        {  
 sList = get;  //得到
        }  
    //索引
        private int index = -1;  
//获取当前项
        public object Current  
        {  
 get  
 {  
 if(index>=0&&index<sList.Length)  
 {  
 return sList[index];  
 }  
 else  
 {  
 throw new  IndexOutOfRangeException;  
 }  
 }  
        }  
  //移到下一个
        public bool MoveNext  
        {  
 if (index+1 < sList.Length)  
 {  
 index++;  
 return true;  
 }  
 else  
 {  
 return false;  
 }  
        }  
      //重置
        public void Reset  
        {  
  
 index = -1;  
        }  
}  

然后在实例化自己写的MyStruct就可以用foreach来遍历了;

原文链接:,转发请注明来源!