日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

认识.NET的集合

發布時間:2025/5/22 asp.net 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 认识.NET的集合 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
集合(collection)提供了一種結構化組織任意對象的方式,而且我們早就知道集合在日常編程工作中的重要性。.NET類庫提供了豐富的集合數據類型,其種類之繁多甚至使許多人看得眼都花了,這些集合對象都具有各自的專用場合。不管怎么說,更多的選擇也就意味著更高的靈活性,但同時也意味著更高的復雜性。因此,對集合各個類型的用途和使用條件具有適度的了解是完全必要的。下面就請隨我進行一場.NET集合之旅吧!
.NET集合定義

從.NET的角度看,所謂的集合可以定義為一種對象,這種對象實現一個或者多個System.Collections.ICollection、System.Collections.IDictionary和System.Collections.IList接口。這一定義把System.Collections名稱空間中的“內置”集合劃分成了三種類別:

  • 有序集合:僅僅實現ICollection接口的集合,在通常情況下,其數據項目的插入順序控制著從集合中取出對象的的順序。System.Collections.Stack和 System.Collections.Queue類都是ICollection集合的典型例子。
  • 索引集合:實現Ilist的集合,其內容能經由從零開始的數字檢索取出,就象數組一樣。System.Collections.ArrayList對象是索引集合的一個例子。
  • 鍵式集合:實現 IDictionary 接口的集合,其中包含了能被某些類型的鍵值檢索的項目。IDictionary集合的內容通常按鍵值方式存儲,可以用枚舉的方式排序檢索。 System.Collections.HashTable類實現了IDictionary 接口。

正如你看到的那樣,給定集合的功能在很大程度上受到特定接口或其實現接口的控制。如果你對面向對象編程缺乏了解,那么你可能對上面說的這些話感到難以理解。不過你至少應該知道,以接口這種方式構造對象的功能不但造就了具有整套類似方法的對象族,而且還能讓這些對象在必要的情況下可以當作同類,以OOP(面向對象編程)的術語來說,這就是大名鼎鼎的多態性技術。

System.Collections概述

System.Collections名稱空間包含了在你的應用程序中可以用到的6種內建通用集合。另一些更為專業化的集合則歸屬于System.Collections.Specialized,在某些情況下你會發現這些專用集合也是非常有用的。加上一些異常(exception)類,這些專業化集合在功能上和內建集合是類似的。現在就讓我們審視一下通用集合以及少量的不太富于專業化的集合。

堆棧和隊列

System.Collections.Stack 和 System.Collections.Queue 類,兩者僅僅實現了ICollection 接口,按照存儲項目加到集合的順序保存System.Object類型的項目。對象只能按其加入順序從集合中檢索:堆棧是后進先出,而隊列則是先進先出。通常情況下,你在以下場合可以考慮采用以上這些集合:

  • 接收和處理集合內項目時順序比較重要。
  • 你能在處理項目之后丟棄它。
  • 你不需要訪問集合中的任意項目。

ArrayList

System.Collections.ArrayList類,僅僅實現 Ilist,最適合描述為一種正常數組和集合的混合類型。ArrayList按照項目被加入集合的順序存儲項目。每個項目都被分配一個索引標識符而且能由關聯它們的索引數字以任何順序被檢索。當新項目加入集合時會擴大ArrayList從而令其相比普通數組更具靈活性。然而,ArrayList負載比傳統數組更大而且沒有實現嚴格的類型化,也就可以接受任何轉換為System.Object的對象(換句話說,對什么東西都來者不拒)。

SortedList

System.Collections.SortedList,它實現了IDictionary和ICollection接口,是最基本的排序集合,與Vb6下的Collection對象非常類似。SortedList存儲對象并按照關聯的鍵值對這些存儲對象排序。它們也是同時支持索引數字和鍵對象檢索的唯一內建的.NET集合。

HashTable

強有力的System.Collections.HashTable集合實現了IDictionary 和 Icollection,能用來存儲多種類型的對象連同關聯的唯一字符串鍵值。在HashTable集合中的項目按照源自其鍵值的哈希代碼所確定的順序存儲。集合內每個對象的鍵值都必須唯一,而其哈希代碼則不一定唯一。


什么是哈希代碼?
哈希代碼實質上就是從一快數據中消除所有冗余部分之后的結果,它主要起到對數據輔助分類或排序的作用。

當某個項目加入集合時,HashTable即調用鍵值的GetHashCode方法,由于所有的類都是從System.Objec繼承的,所以調用該方法即可確定該類的哈希代碼并且按該代碼排序存儲。你可以強迫使用定制的哈希函數,方法有二,一是重載類的GetHashCode方法,二是向HashTable構造器傳遞實現了System.Collections.IHashcodeProvider接口的對象,在這種情況下,該對象將用于為所有加入集合的鍵值產生哈希代碼。

從性能的角度看,因為鍵值搜索僅限于具有同樣哈希代碼的鍵值,所以HashTable能夠很快地從集合中檢索任意一個元素,從而減少了必須通過檢查以發現匹配的鍵值的數量。然而,因為插入到集合中的每個對象-鍵值對都必須產生相應的哈希代碼,所以項目插入的代價就有點高了。因此,HashTable主要運用在按照任意鍵值反復檢索大量相對靜態的數據這一場合下。

ListDictionary 和 HybridDictionary

ListDictionary 和 HybridDictionary 類歸屬于System.Collections.Specialized。它們都在按照唯一鍵值的原則來組織項目,而且都實現了 IDictionary 和 ICollection 。ListDictionary在內部以鏈表的方式存儲項目,建議用在不會增長超過10個項目的集合中。HybridDictionary采用一個內部鏈表(實際上就是ListDictionary)作為小集合,當集合變得足夠大(超過10個項目)以至于鏈表實現效率降低時就會轉換為HashTable。

StringCollection 和 StringDictionary

System.Collections.Specialized.StringCollection 和 System.Collections.Specialized.StringDictionary 都對存儲字符串的集合進行了優化。 StringCollection實現了 IList 和 ICollection 而且實質上就是ArrayList,只不過實現了強烈的類型化僅僅接受字符串而已。StringCollection最理想的應用場合是經常更新或增加的少量數據,而StringDictionary則最適用于不經常增加項目到諸如HashTable之類集合中的大量數據。

NameValueCollection

System.Collections.Specialized.NameValueCollection最有趣的地方在于它能包含關聯同一鍵值的多個項目,這正是它與其他內建集合的差別所在。除此以外,它在功能上類似HashTable,按照源自每一項目鍵值的哈希代碼對項目排序從而也具有類同的優缺點。

存在的問題

如果說由 .NET 類庫所提供的內建集合也存在問題的話,那多半是它們幾乎都在內部把項目存儲為System.Object.類型。從最大靈活性的角度看那是一個好想法,但同時也給采用這些通用集合的程序員提出了一些問題。首先,只要你把一個新項目加到集合中去,運行時就必須實施類型轉換操作(創建值類型的索引以便可以當作對象引用)。這是一種低效的操作而且在處理大型集合時會產生相當可觀的性能問題。其次,只要你訪問通用集合中的一個項目,該項目都將作為System.Object類型被返回,這就意味著你不得不把它轉換為真實的類型才能對其進行有意義的操作。

總結

以上是生活随笔為你收集整理的认识.NET的集合的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 少妇厨房愉情理伦bd在线观看 | 999av视频| 日本爽爽 | www.欧美色图 | 都市激情亚洲 | 99视频国产精品免费观看a | 伊人精品在线视频 | 国产免费成人 | 天堂在线成人 | 色99999| 亚洲乱妇老熟女爽到高潮的片 | 99精品国产99久久久久久97 | 免费在线观看高清影视网站 | 精品66| 成为性瘾网黄的yy对象后 | 秋霞午夜影院 | 亚洲AV无码国产精品播放在线 | 久久97久久97精品免视看 | 日本丰满少妇一区二区三区 | 亚洲人成电影在线 | 中文自拍| 活大器粗np高h一女多夫 | 成人精品久久 | www四虎精品视频免费网站 | 久久精品国产亚洲av嫖农村妇女 | 亚洲综合影视 | 国内老熟妇对白hdxxxx | 日韩精品一区二区av | 欧美精品一区二区三区在线 | 国产欧美日韩专区发布 | 欧洲av一区二区 | 色漫在线观看 | 国产又粗又猛又爽又黄的视频一 | 黄色不雅视频 | 91视频入口| 精品一区二区三区电影 | 国产免费久久久 | 韩日精品中文字幕 | 免费看美女被靠到爽的视频 | 色窝窝综合色窝窝久久 | 中国精品毛片 | 人人澡人人澡 | 国产精品乱码一区二三区小蝌蚪 | 日本a免费| 色婷婷影院| 亚洲欧洲免费 | a视频在线观看免费 | 四虎网址大全 | 亚洲国产日韩一区无码精品久久久 | 在线视频三区 | 欧美黑人xxxⅹ高潮交 | 久久久国产打桩机 | 春色av | 美女一级| 97青草| www.色国产 | 日本黄色一级视频 | 双腿张开被9个男人调教 | 国产无码日韩精品 | 国产资源在线观看 | av拍拍拍| 日韩欧美精品中文字幕 | 日本人の夫妇交换 | 欧美变态绿帽cuckold | 亚洲av无码一区二区二三区 | 天天草夜夜操 | 禁断介护老人中文字幕 | 黄色网址你懂的 | 国产xxxx孕妇 | 亚州av在线 | 久久免费看少妇高潮v片特黄 | 国产麻豆剧传媒精品国产av | 国产在线一 | 老子午夜影院 | 日韩美女中文字幕 | 久久久久亚洲精品国产 | 欧美人与动物xxxxx | 国产一区在线视频 | 91蝌蚪视频在线 | 欧美超碰在线 | 久久久久久a| 欧美中文字幕在线播放 | 91精品人妻一区二区三区蜜桃欧美 | 天天做天天爱夜夜爽 | 国产精品v欧美精品v日韩精品 | 国产欧美精品久久 | 人妻 丝袜美腿 中文字幕 | 公交上高潮的丁芷晴 | 青青青免费视频观看在线 | 91免费. | 午夜免费激情视频 | 免费一级特黄 | 亚洲天堂国产 | 人人舔人人插 | 俺去久久| 午夜黄色大片 | 成人精品亚洲 | 91精品国产乱码在线观看 | 一区二区日韩国产 |