能用foreach遍歷訪問的對象需要實現____接口或聲明____方法的類型

一、答案

      能用foreach遍歷訪問的對象需要實現IEnumerable接口或聲明GetEnumerator方法的類型

      注:不一定要實現IEnumerable接口,但一定要實現GetEnumrator方法。

二、.Net 1.0實現


public class MyList<T> : IEnumerable
    
{
        
public int Count get return Items == null ? 0 : Items.Length; } }

        
public T[] Items getset; }

        
public T this[int index]
        
{
            
get return Items[index]; }
        }


        
//返回一個循環訪問集合的枚舉數。
        public IEnumerator GetEnumerator()
        
{
            
return new MyEnumerator<T>() { List = this };
        }

    }


    
public class MyEnumerator<T> : IEnumerator
    
{
        
private int index = -1;
        
public MyList<T> List getset; }

        
//將枚舉數設置爲其初始位置,該位置位於集合中第一個元素之前。
        public void Reset()
        
{
            index 
= -1;
        }


        
//將枚舉數推進到集合的下一個元素。
        public bool MoveNext()
        
{
            index
++;
            
return (index < List.Count);
        }


        
//獲取集合中的當前元素。
        public object Current get return List[index]; } }
    }


 
//客戶端調用,注:1.0中無泛型
            MyList<int> list = new MyList<int>() { Items = new int[] 1234 } };
            
foreach (int item in list)
            
{
                MessageBox.Show(item.ToString());
            }
發佈了14 篇原創文章 · 獲贊 3 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章