c# 索引與迭代器的範例程式碼詳解

來源:互聯網
上載者:User

C#迭代器與索引 簡單樣本

迭代器是一種設計思想和設計模式,在C#中可以方便的實現一個迭代器,即實現Ienumerator介面。例如我有一個student類,現在想封裝一個studentCollection,代碼是這樣的:

Student類:

StudentCollection類:

很簡單的封裝,僅有一個欄位,那就是studentList,類型是list<Student>,實現Ienumerator介面的代碼我藉助了studentList,因為這個類實現了這個介面,因此拿來用就好了。這樣我就可以對studentCollection進行foreach遍曆了:

代碼說明:

1. new一個studentCollection對象,並使用初始化器一一初始化每一個student對象

2. 用foreach遍曆每一個student

3. 取得每一個人的名字累加到字串,然後彈出提示框顯示

有其他方式實現Ienumerator這個介面嗎?答案是肯定的,代碼如下:


public IEnumerator GetEnumerator()        {            foreach (Student s in studentList)            {                yield return s;////使用yield關鍵字實現迭代器            }        }


關於索引符以及索引符重載:

細心的讀者可能已經發現了,在studentCollection類中,我定義了兩個索引符:

////通過索引來訪問

 public Student this[int index]        {            get            {                return studentList[index];            }        }

////通過學生姓名來訪問

 public Student this[string name]        {            get { return studentList.Single(s => s.StudentName == name); }        }

索引符重載機制使得封裝顯得更靈活,更強大。

以上就是c# 索引與迭代器的範例程式碼詳解的內容,更多相關內容請關注topic.alibabacloud.com(www.php.cn)!

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.