泛型最常見的用途是泛型集合,命名空間System.Collections.Generic 中包含了一些基于泛型的集合類,使用泛型集合類可以提供更高的類型安全性,還有更高的性能,避免了非泛型集合的重複的裝箱和拆箱。
簡介
在C#中,Dictionary提供快速的基于兼職的元素查找。當你有很多元素的時候可以使用它。它包含在System.Collections.Generic名空間中。
在使用前,你必須聲明它的鍵類型和值類型
詳細說明
必須包含名空間System.Collection.Generic
Dictionary裡面的每一個元素都是一個鍵值對(由二個元素組成:鍵和值)
鍵必須是唯一的,而值不需要唯一的
鍵和值都可以是任何類型(比如:string, int, 自定義類型,等等)
通過一個鍵讀取一個值的時間是接近O(1)
建立和初始化一個Dictionary對象
Dictionary<char,int> dic=new Dictionary<char,int>()
//計算字元串中每種字元出現的次數(面試題)。“Welcome to Chinaworld”,不區分大小寫,列印“W2”“e 2”“o 3”……
列子
static void Main(string[] args)
{
//執行個體化對象,聲明它的鍵類型和值類型。結構:Dictionary<[key], [value]>
//他的特點是存入對象是需要與[key]值一一對應的存入該泛型 通過某一個一定的[key]去找到對應的值
Dictionary<char,int> dic=new Dictionary<char,int>();
string str = "Welcome to C h i naworld";
//先去掉字元串中的空格,然後轉換為小寫
str = str.Replace(" ","").ToLower();
//把字元串轉化為字元數組
char[] arr = str.ToCharArray();
//從字元數組中周遊每個字元,然後記錄到Dictionary<char,int>中
foreach(char c in arr)
{//如果你嘗試讀取字典中一個不存在的鍵,那麼你會得到一個KeyNotFoundException。
所有在讀取一個鍵之前,你必須先使用ContainKey來核對鍵是否存在字典中。
//判斷Dictionary<char,int> 是否包含相應的key鍵(:就是字元例如'K')
if (!dic.ContainsKey(c))
{
//如果不存在就添加鍵并給他一個(value)值1
dic.Add(c, 1);
}
else
{ // 如果存在相應的key鍵(:例如已經有了“k”字元),就對它對應的(value)值+1
dic[c] = dic[c] + 1;
}
}
//使用KeyValuePair記錄枚舉字典中的鍵/值,ke.Key, ke.Value擷取鍵對應的值
foreach(KeyValuePair<char,int> ke in dic)
{
Console.WriteLine("{0}出現{1}次\n",ke.Key,ke.Value);
}
//
KeyValuePair<TKey, TValue>
foreach (KeyValuePair<string, string> kvp in openWith)
{
outputBlock.Text += String.Format("Key = {0}, Value = {1}",
kvp.Key, kvp.Value) + "\n";
}