c 泛型集合Dictionary

2021-04-16 14:04:08 字數 3134 閱讀 8634

泛型最常見的用途是泛型集合,命名空間system.collections.generic 中包含了一些基於泛型的集合類,使用泛型集合類可以提供更高的型別安全性,還有更高的效能,避免了非泛型集合的重複的裝箱和拆箱。

很多非泛型集合類都有對應的泛型集合類,我覺得最好還是養成用泛型集合類的好習慣,他不但效能上好而且 功能上要比非泛型類更齊全。下面是常用的非泛型集合類以及對應的泛型集合類:

非泛型集合類

泛型集合類

arraylist

list

hashtable

dictionary

queue

queue

stack

stack

sortedlist

sortedlist

我們用的比較多的非泛型集合類主要有  arraylist類 和 hashtable類,其中當我們經常性的操作 資料資訊時往往用hashtable 來儲存將要寫入到資料庫或者返回的資訊,在這之間要不斷的進行型別的轉化,他給我們的幫助應該是非常大的,如果我們操縱的資料型別相對確定的化  用dictionary集合類來儲存資料就方便多了,例如我們需要在電子商務**中儲存使用者的購物車資訊( 商品名,對應的商品個數)時,完全可以用dictionary來儲存購物車資訊,而不需要任何的型別轉化。

下面是簡單的例子,包括宣告,填充鍵值對,移除鍵值對,遍歷鍵值對

dictionarymydic = new dictionary();

mydic.add("aaa", "111");

mydic.add("bbb", "222");

mydic.add("ccc", "333");

mydic.add("ddd", "444");

//如果新增已經存在的鍵,add方法會丟擲異常

try

catch (argumentexception ex)

//解決add()異常的方法是用containskey()方法來判斷鍵是否存在

if (!mydic.containskey("ddd"))

else

//而使用索引器來負值時,如果建已經存在,就會修改已有的鍵的鍵值,而不會丟擲異常

mydic ["ddd"]="ddd";

mydic["eee"] = "555";

//使用索引器來取值時,如果鍵不存在就會引發異常

try

catch (keynotfoundexception ex)

//解決上面的異常的方法是使用contarnskey() 來判斷時候存在鍵,如果經常要取健值得化最好用 trygetvalue方法來獲取集合中的對應鍵值

string value = "";

if (mydic.trygetvalue("fff", out value))

else

//下面用foreach 來遍歷鍵值對

//泛型結構體 用來儲存健值對

foreach (keyvaluepairkvp in mydic)

,value=", kvp.key, kvp.value); }

//獲取值得集合

foreach (string s in mydic.values)

", s); }

//獲取值得另一種方式

dictionary.valuecollection values = mydic.values;

foreach (string s in values)

", s); }

//獲取鍵的集合和獲取值得集合類似

常用的屬性和方法如下:

常用屬性

屬性說明

comparer

獲取用於確定字典中的鍵是否相等的 iequalitycomparer。

count

獲取包含在dictionary中的鍵/值對的數目。

item

獲取或設定與指定的鍵相關聯的值。

keys

獲取包含dictionary中的鍵的集合。

values

獲取包含dictionary中的值的集合。

常用的方法

方法說明

add將指定的鍵和值新增到字典中。

clear

dictionary中移除所有的鍵和值。

containskey

確定dictionary是否包含指定的鍵。

containsvalue

確定dictionary是否包含特定值。

equals

已過載。 確定兩個 object例項是否相等。 (從

object繼承。)

getenumerator

返回迴圈訪問dictionary的列舉數。

gethashcode

用作特定型別的雜湊函式。gethashcode適合在雜湊演算法和資料結構(如雜湊表)中使用。 (從

object繼承。)

getobjectdata

實現 system.runtime.serialization.iserializable介面,並返回序列化dictionary例項所需的資料。

gettype

獲取當前例項的 type。 (從

object繼承。)

ondeserialization

實現system.runtime.serialization.iserializable介面,並在完成反序列化之後引發反序列化事件。

referenceequals

確定指定的object例項是否是相同的例項。 (從 object繼承。)

remove

dictionary中移除所指定的鍵的值。

tostring

返回表示當前object的 string。 (從

object繼承。)

trygetvalue

獲取與指定的鍵相關聯的值。  

C 泛型 泛型集合Dictionary

在system.collections.generic命名空間中,與arraylist相對應的泛型集合是list,與hashtable相對應的泛型集合是dictionary,其儲存資料的方式與雜湊表相似,通過鍵 值來儲存元素,並具有泛型的全部特徵,編譯時檢查型別約束,讀取時無須型別轉換。本儲存的例子...

C 泛型Dictionary集合

1 要使用dictionary集合,需要匯入c 泛型命名空間 system.collections.generic 程式集 mscorlib 2 描述 1 從一組鍵 key 到一組值 value 的對映,每乙個新增項都是由乙個值及其相關連的鍵組成 2 任何鍵都必須是唯一的 3 鍵不能為空引用null...

c 泛型集合Dictionary

泛型最常見的用途是泛型集合,命名空間system.collections.generic 中包含了一些基於泛型的集合類,使用泛型集合類可以提供更高的型別安全性,還有更高的效能,避免了非泛型集合的重複的裝箱和拆箱。很多非泛型集合類都有對應的泛型集合類,我覺得最好還是養成用泛型集合類的好習慣,他不但效能...