泛型最常見的用途是泛型集合,命名空間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
泛型最常見的用途是泛型集合,命名空間system.collections.generic 中包含了一些基於泛型的集合類,使用泛型集合類可以提供更高的型別安全性,還有更高的效能,避免了非泛型集合的重複的裝箱和拆箱。很多非泛型集合類都有對應的泛型集合類,我覺得最好還是養成用泛型集合類的好習慣,他不但效能...
C 泛型Dictionary集合
1 要使用dictionary集合,需要匯入c 泛型命名空間 system.collections.generic 程式集 mscorlib 2 描述 1 從一組鍵 key 到一組值 value 的對映,每乙個新增項都是由乙個值及其相關連的鍵組成 2 任何鍵都必須是唯一的 3 鍵不能為空引用null...