說明
必須包含名空間System.Collection.Generic?
Dictionary裏面的每壹個元素都是壹個鍵值對(由二個元素組成:鍵和值)?
鍵必須是唯壹的,而值不需要唯壹的?
鍵和值都可以是任何類型(比如:string,?int,?自定義類型,等等)?
通過壹個鍵讀取壹個值的時間是接近O(1)?
鍵值對之間的偏序可以不定義
使用方法:
//定義
Dictionary<string,?string>?openWith?=?new?Dictionary<string,?string>();
//添加元素
openWith.Add("txt",?"notepad.exe");
openWith.Add("bmp",?"paint.exe");
openWith.Add("dib",?"paint.exe");
openWith.Add("rtf",?"wordpad.exe");
//取值
Console.WriteLine("For?key?=?\"rtf\",?value?=?{0}.",?openWith["rtf"]);
//更改值
openWith["rtf"]?=?"winword.exe";
Console.WriteLine("For?key?=?\"rtf\",?value?=?{0}.",?openWith["rtf"]);
//遍歷key
foreach?(string?key?in?openWith.Keys)
{
Console.WriteLine("Key?=?{0}",?key);
}
//遍歷value
foreach?(string?value?in?openWith.Values)
{
Console.WriteLine("value?=?{0}",?value);
}
//遍歷value,?Second?Method
Dictionary<string,?string>.ValueCollection?valueColl?=?openWith.Values;
foreach?(string?s?in?valueColl)
{
Console.WriteLine("Second?Method,?Value?=?{0}",?s);
}
//遍歷字典
foreach?(KeyValuePair<string,?string>?kvp?in?openWith)
{
Console.WriteLine("Key?=?{0},?Value?=?{1}",?kvp.Key,?kvp.Value);
}
//添加存在的元素
try
{
openWith.Add("txt",?"winword.exe");
}
catch?(ArgumentException)
{
Console.WriteLine("An?element?with?Key?=?\"txt\"?already?exists.");
}
//刪除元素
openWith.Remove("doc");
if?(!openWith.ContainsKey("doc"))
{
Console.WriteLine("Key?\"doc\"?is?not?found.");
}
//判斷鍵存在
if?(openWith.ContainsKey("bmp"))?//?True?
{
Console.WriteLine("An?element?with?Key?=?\"bmp\"?exists.");
}
參數為其它類型
//參數為其它類型?
Dictionary<int,?string[]>?OtherType?=?new?Dictionary<int,?string[]>();
OtherType.Add(1,?"1,11,111".Split(','));
OtherType.Add(2,?"2,22,222".Split(','));
Console.WriteLine(OtherType[1][2]);
參數為自定義類型
首先定義類
class?DouCube
{
public?int?Code?{?get?{?return?_Code;?}?set?{?_Code?=?value;?}?}?private?int?_Code;
public?string?Page?{?get?{?return?_Page;?}?set?{?_Page?=?value;?}?}?private?string?_Page;
}?
然後
//聲明並添加元素
Dictionary<int,?DouCube>?MyType?=?new?Dictionary<int,?DouCube>();
for?(int?i?=?1;?i?<=?9;?i++)
{
DouCube?element?=?new?DouCube();
element.Code?=?i?*?100;
element.Page?=?"/"?+?i.ToString()?+?".html";
MyType.Add(i,?element);
}
//遍歷元素
foreach?(KeyValuePair<int,?DouCube>?kvp?in?MyType)
{
Console.WriteLine("Index?{0}?Code:{1}?Page:{2}",?kvp.Key,?kvp.Value.Code,?kvp.Value.Page);
}?
當程序用到字典時提示關鍵字不在字典中時說明妳在創建字典的時候沒有添加那個關鍵字
即,妳的字典沒有執行?Add()?放法或是執行Add()方法是沒有將關鍵字Add進字典去:
比如:
Dictionary<int,string>?intDict?=?new?Dictionary<int,string>();
string?ss?=?intDict[0];//?當妳直接這樣執行後就會報?關鍵字不在字典中
//而像下面這樣就不會.
intDict.Add(0,"Value");
string?ss1?=?intDict[0];