程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#中的ICollection接口,

C#中的ICollection接口,

編輯:C#入門知識

C#中的ICollection接口,


一、集合類:

 

1.1 ICollection接口

  前面我們學習了數組,這是.net Framework定義的最基本的集合類型,除過數組外,.net Framework還另外定義了很多集合類型以滿足編程的需要。

常見的集合有:

  • 向量;
  • 鏈表;
  • 雙端隊列;
  • 棧;
  • 樹;
  • Hash表;
  • Hash映射。

  所有的這些集合類型,在.net Framework中都必須實現一個重要的接口:ICollection接口。ICollection接口為實現它的類定義了兩個主要規范:

  • 集合元素數量(表現為Count屬性);
  • 訪問集合的迭代子(表現為GetEnumerator方法)。

  其中,GetEnumerator方法是由ICollection的父接口IEnumerable接口繼承得來的。

  ICollection接口定義了一個存儲和獲取object類型對象引用的集合,所以可以存儲和獲取各種引用類型對象的引用或值類型對象。

 

1.2 IEnumerable接口

  IEnumerable接口是ICollection的父接口,凡實現此接口的類,都具備“可迭代”的能力。

  IEnumerable接口只定義了一個方法:GetEnumerator,該方法將返回一個“迭代子”對象(或稱為迭代器對象),是一個實現了IEnumerator接口的對象實例。

圖1 ICollection繼承層次

 

二、迭代子

  迭代子在C++中也稱為迭代器,是設計模式中的迭代模式,其存在的意義為:每一種集合都具備不同的存儲形式,例如向量使用數組來存儲,鏈表使用對象和對象間的引用來存儲,表采用多維數組或十字引用來保存數據,樹通過對象和對象間的多個引用來建立關系,圖采用樹或表來保存其關系……可見不同的集合類存儲數據的方式是多樣化的。存儲的多樣性必然導致訪問的多樣性,集合最常用的訪問是“遍歷”,即從集合的頭部訪問到集合的尾部,我們需要想辦法使用一種統一的方式遍歷訪問不同形式的集合。這就是迭代方式產生的基本原因。

  迭代模式將集合類看做一個容量無限的容器,並且容器的存放規則是線性的,即容器裡的每一個元素都必須具有一個直接前趨(除過第一個元素)和一個直接後繼(除過最後一個元素)容器中具備一個標志,可以指向容器中的任意一個存儲單位

  迭代分為兩種:單向只向前迭代和雙向迭代

 

2.1 單向只向前迭代模式

  對於單向只向前迭代模式,集合的單元標志只能從集合的某個元素起始逐一向後移動,所以最基本的迭代模式定義了三種操作:

  • 訪問標志所在項;
  • 標志前進到下一項並判斷是否到達集合末尾;
  • 重新回到初始項。

圖2 單向只向前迭代

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved