国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

C#中的ICollection接口

2019-11-17 02:56:13
字體:
來源:轉載
供稿:網友
C#中的ICollection接口

一、集合類:

1.1 ICollection接口

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

常見的集合有:

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

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

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

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

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

1.2IEnumerable接口

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

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

圖1 ICollection繼承層次

二、迭代子

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

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

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

2.1 單向只向前迭代模式

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

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

圖2 單向只向前迭代

2.2 雙向迭代模式

  對于雙向迭代模式,集合的單元標志即從集合的某個元素起逐一向后移動,也可以從集合的某一個元素起逐一向前移動,所以該類型迭代器定義了四種操作:

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

圖3 雙向迭代

  .net Framework使用IEnumerator接口定義了一個單向只向前迭代規范。

  ICollection接口繼承了IEnumerable接口,該接口定義的GetEnumerator方法可以獲取到一個當前集合類對象的迭代子對象,即一個實現了IEnumerator接口的對象。

  凡是實現了IEnumerable接口的類,都可以使用foreach循環迭代遍歷。

  IEnumerator接口定義了一個可以遍歷object類型對象引用的迭代子,IEnumerable接口定義了獲取這種迭代子對象的方法。

三、泛型集合

3.1 ICollection<T>接口

  ICollection<T>接口定義了泛型集合接口,所謂泛型集合,即使用了.net Framework提供的泛型特性,使集合限定為只存儲一種特定類型對象引用或值類型的數據的集合。泛型集合增強了集合訪問的效率和安全性。

  由于存儲類型已被確定,所以ICollection<T>比ICollection接口提供了更多的方法,包括添加到集合,從集合刪除以及判斷一個對象引用(或對象值)是否在集合中存在。

3.2 IEnumerable<T>接口

  ICollection<T>接口實現了IEnumerable<T>接口,主要用來返回一個實現了實現了IEnumerator<T>接口的,確定類型的迭代子對象。

  參考ICollection<T>的繼承關系圖。

圖4 ICollection<T>接口繼承關系圖

  熟悉上述的系列接口,這是我們后面學習各種集合類對象的基礎。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 望城县| 大洼县| 盐边县| 武穴市| 瑞昌市| 万年县| 浦城县| 锦屏县| 宜良县| 凉城县| 绍兴市| 会东县| 江华| 河津市| 庆云县| 宁化县| 黑龙江省| 万安县| 盈江县| 七台河市| 玉龙| 东乌| 嘉禾县| 龙南县| 安岳县| 黎平县| 阿勒泰市| 西华县| 济宁市| 民乐县| 进贤县| 南宁市| 台江县| 隆安县| 定陶县| 榕江县| 扶绥县| 凌源市| 河南省| 湛江市| 吉木萨尔县|