1、要使用dictionary集合,需要匯入c#泛型命名空間system.collections.generic(程式集:mscorlib)
2、描述
1)、從一組鍵(key)到一組值(value)的對映,每乙個新增項都是由乙個值及其相關連的鍵組成
2)、任何鍵都必須是唯一的
3)、鍵不能為空引用null(vb中的nothing),若值為引用型別,則可以為空值
4)、key和value可以是任何型別(string,int,custom class 等)
3、建立及初始化
dictionarymydictionary = new dictionary();
4、新增元素
mydictionary.add("c#",0);
mydictionary.add("c++",1);
mydictionary.add("c",2);
mydictionary.add("vb",2);
5、查詢元素by key
if(mydictionary.containskey("c#"))
,value:", "c#", mydictionary["c#"]);
}6.遍歷元素 by keyvaluepair
foreach (keyvaluepairkvp in mydictionary)
, value = ",kvp.key, kvp.value);
}7、僅遍歷鍵 by keys 屬性
dictionary.keycollection keycol = mydictionary.keys;
foreach (string key in keycol/*string key in mydictionary.keys*/)
", key);
}8、僅遍歷值by valus屬性
dictionary.valuecollection valuecol = mydictionary.values;
foreach (int value in valuecol)
", value);
}9.移除指定的鍵值by remove方法
mydictionary.remove("c#");
if (mydictionary.containskey("c#"))
,value:", "c#", mydictionary["c#"]);
} else
在system.collections.generic命名空間中,與arraylist相對應的泛型集合是list,與 hashtable相對應的泛型集合是dictionary,其儲存資料的方式與雜湊表相似,通過鍵/值來儲存元素,並具有泛型的全部特徵,編譯時檢查型別約束,讀取時無須型別轉換。
**本儲存的例子中,使用dictionary來儲存**本資訊,**如下:
dictionaryht=new dictionary();
在dictionary宣告中,「」中的string表示集合中key的型別,telnote表示value的型別,定義dictionary泛型集合中的方法如下:
dictionarystudents=new dictionary();
其中「k」為佔位符,具體定義時用儲存鍵「key」的資料型別代替,「v」也是佔位符,用元素的值「value」的資料型別代替,這樣就在定義該集合時,宣告了儲存元素的鍵和值的資料型別,保證了型別的安全性。
dictionary中元素的操作方法與hashtable相似,新增元素,獲取元素,刪除元素,遍歷集合元素的方法基本相同。
dictionary和hashtable的區別
dictionary和hashtable的相同點:新增元素,刪除元素,通過鍵訪問值的方法相同。
dictionary和hashtable的不同點:
dictionary對新增的元素具有型別約束,hashtable可新增任意型別的元素。
dictionary不需要裝箱、拆箱操作,hashtable新增時裝箱,讀取時拆箱。
在dictionary集合中,除了通過鍵獲取值的方法外,還有一種trygetvalue(key)方法,可以通過鍵獲取值,該方法返回值為布林型,如果存在和鍵相對應的值,則返回true,否則返回false。避免了因獲取不到相應值發生的異常。
using system;
using system.collections.generic;
class program
", film.count);
film.remove("楊過");
//遍歷集合
console.writeline("武俠電影的主角及電影名");
console.writeline("/t主角/t電影");
foreach (keyvaluepair < string, string > kvp in film)
/t", kvp.key, kvp.value);
}//檢查元素是否存在,如不存在,新增
if (!film.containskey("段譽"))
//獲取鍵的集合
dictionary < string, string > .keycollection keys = film.keys;
//遍歷鍵的集合
console.writeline("受歡迎的武俠片中主角名");
foreach (string str in keys)
dictionary < string, string > .valuecollection values = film.values;
//遍歷值的集合
console.writeline("最受歡迎的武俠片");
foreach (string strfilm in values)
//遍歷元素的另一種方法
console.writeline("和雜湊表相同的遍歷元素方法");
foreach (string strname in film.values)
//獲取鍵對應的值
string myfilm = film["令狐沖"];
console.writeline("主角為令狐沖的電影名", myfilm);
//獲取鍵對應值的trygetvalue方法
string objfilm = string.empty;
if (film.trygetvalue("段譽", out objfilm))
", objfilm);
}else
console.writeline("沒有主角為段譽的電影");
console.readkey();}}
**建立了乙個dictionary集合,鍵和值的資料型別是string型別,後邊**的元素新增,刪除都和雜湊表處理方法相同,遍歷元素時不需要進行資料型別強制轉換。dictionary通過鍵取值的trygetvalue方法,此方法包括兩個引數,乙個是要查詢的鍵,另乙個是獲取的值,注意值前面使用out關鍵字。
注意:使用trygetvalue方法時,引數一定要使用out關鍵字,否則編譯失敗。
C 泛型 泛型集合Dictionary
在system.collections.generic命名空間中,與arraylist相對應的泛型集合是list,與hashtable相對應的泛型集合是dictionary,其儲存資料的方式與雜湊表相似,通過鍵 值來儲存元素,並具有泛型的全部特徵,編譯時檢查型別約束,讀取時無須型別轉換。本儲存的例子...
c 泛型集合Dictionary
泛型最常見的用途是泛型集合,命名空間system.collections.generic 中包含了一些基於泛型的集合類,使用泛型集合類可以提供更高的型別安全性,還有更高的效能,避免了非泛型集合的重複的裝箱和拆箱。很多非泛型集合類都有對應的泛型集合類,我覺得最好還是養成用泛型集合類的好習慣,他不但效能...
c 泛型集合Dictionary
泛型最常見的用途是泛型集合,命名空間system.collections.generic 中包含了一些基於泛型的集合類,使用泛型集合類可以提供更高的型別安全性,還有更高的效能,避免了非泛型集合的重複的裝箱和拆箱。很多非泛型集合類都有對應的泛型集合類,我覺得最好還是養成用泛型集合類的好習慣,他不但效能...