C#泛型聚集Dictionary<K,V>的應用辦法。本站提示廣大學習愛好者:(C#泛型聚集Dictionary<K,V>的應用辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是C#泛型聚集Dictionary<K,V>的應用辦法正文
1、要應用Dictionary聚集,須要導入C#泛型定名空間
System.Collections.Generic(法式集:mscorlib)
2、描寫
1)、從一組鍵(Key)到一組值(Value)的映照,每個添加項都是由一個值及其相干連的鍵構成
2)、任何鍵都必需是獨一的
3)、鍵不克不及為空援用null(VB中的Nothing),若值為援用類型,則可認為空值
4)、Key和Value可所以任何類型(string,int,custom class 等)
3、創立及初始化
Dictionary<int, string> myDictionary = new Dictionary<int, string>();
4、添加元素
myDictionary.Add("C#",0);
myDictionary.Add("C++",1);
myDictionary.Add("C",2);
myDictionary.Add("VB",2);
5、查找元素By Key
if(myDictionary.ContainsKey("C#"))
{
Console.WriteLine("Key:{0},Value:{1}", "C#", myDictionary["C#"]);
}
6.遍歷元素 By KeyValuePair
foreach (KeyValuePair<string, int> kvp in myDictionary)
{
Console.WriteLine("Key = {0}, Value = {1}",kvp.Key, kvp.Value);
}
7、僅遍歷鍵 By Keys 屬性
Dictionary<string, int>.KeyCollection keyCol = myDictionary.Keys;
foreach (string key in keyCol/*string key in myDictionary.Keys*/)
{
Console.WriteLine("Key = {0}", key);
}
8、僅遍歷值By Valus屬性
Dictionary<string, int>.ValueCollection valueCol = myDictionary.Values;
foreach (int value in valueCol)
{
Console.WriteLine("Value = {0}", value);
}
9.移除指定的鍵值By Remove辦法
myDictionary.Remove("C#");
if (myDictionary.ContainsKey("C#"))
{
Console.WriteLine("Key:{0},Value:{1}", "C#", myDictionary["C#"]);
}
else
{
Console.WriteLine("不存在 Key : C#");
}
在System.Collections.Generic定名空間中,與ArrayList絕對應的泛型聚集是List<T>,與 HashTable絕對應的泛型聚集是Dictionary<K,V>,其存儲數據的方法與哈希表類似,經由過程鍵/值來保留元素,並具有泛型的全體特點,編譯時檢討類型束縛,讀取時不必類型轉換。
德律風本存儲的例子中,應用Dictionary<K,V>來存儲德律風本信息,代碼以下:
Dictionary<string,TelNote> ht=new Dictionary<string,TelNote>();
在Dictionary<K,V>聲明中,“<string,TelNote>”中的string表現聚集中Key的類型,TelNote表現Value的類型,界說Dictionary<K,V>泛型聚集中的辦法以下:
Dictionary<K,V> students=new Dictionary<K,V>();
個中“K”為占位符,詳細界說時用存儲鍵“Key”的數據類型取代,“V”也是占位符,用元素的值“Value”的數據類型取代,如許就在界說該聚集時,聲清楚明了存儲元素的鍵和值的數據類型,包管了類型的平安性。
Dictionary<K,V>中元素的操作辦法與HashTable類似,添加元素,獲得元素,刪除元素,遍歷聚集元素的辦法根本雷同。
Dictionary<K,V>和HashTable的差別
Dictionary<K,V>和HashTable的雷同點:添加元素,刪除元素,經由過程鍵拜訪值的辦法雷同。
Dictionary<K,V>和HashTable的分歧點:
Dictionary<K,V>對添加的元素具有類型束縛,HashTable可添加隨意率性類型的元素。
Dictionary<K,V>不須要裝箱、拆箱操作,HashTable添加古裝箱,讀取時拆箱。
在Dictionary<K,V>聚集中,除經由過程鍵獲得值的辦法外,還有一種TryGetValue(key)辦法,可以經由過程鍵獲得值,該辦法前往值為布爾型,假如存在和鍵絕對應的值,則前往true,不然前往false。防止了因獲得不到響應值產生的異常。
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
//創立Dictionary<K,V>,然後添加元素
Dictionary < string, string > film = new Dictionary < string, string > ();
film.Add("韋小寶", "鹿鼎記");
film.Add("陸小鳳", "陸小鳳傳奇");
film.Add("張無忌", "倚天屠龍記");
film.Add("楊過", "神雕俠侶");
film.Add("令狐沖", "笑傲江湖");
Console.WriteLine("聚集如今的元素個數為{0}", film.Count);
film.Remove("楊過");
//遍歷聚集
Console.WriteLine("武俠片子的配角及片子名");
Console.WriteLine("/t配角/t片子");
foreach (KeyValuePair < string, string > kvp in film)
{
Console.WriteLine("/t{0}/t{1}", kvp.Key, kvp.Value);
}
//檢討元素能否存在,如不存在,添加
if (!film.ContainsKey("段譽"))
{
film.Add("段譽", "天龍八部");
}
//獲得鍵的聚集
Dictionary < string, string > .KeyCollection keys = film.Keys;
//遍歷鍵的聚集
Console.WriteLine("受迎接的武俠片中配角名");
foreach (string str in keys)
{
Console.WriteLine(str);
}
Dictionary < string, string > .ValueCollection values = film.Values;
//遍歷值的聚集
Console.WriteLine("最受迎接的武俠片");
foreach (string strfilm in values)
{
Console.WriteLine(strfilm);
}
//遍歷元素的另外一種辦法
Console.WriteLine("和哈希表雷同的遍歷元素辦法");
foreach (string strname in film.Values)
{
Console.WriteLine(strname);
}
//獲得鍵對應的值
string myfilm = film["令狐沖"];
Console.WriteLine("配角為令狐沖的片子名{0}", myfilm);
//獲得鍵對應值的TryGetValue辦法
string objfilm = string.Empty;
if (film.TryGetValue("段譽", out objfilm))
{
Console.WriteLine("配角為段譽的片子是{0}", objfilm);
}
else
Console.WriteLine("沒有配角為段譽的片子");
Console.ReadKey();
}
}
代碼創立了一個Dictionary<K,V>聚集,鍵和值的數據類型是string類型,後邊代碼的元素添加,刪除都和哈希表處置辦法雷同,遍歷元素時不須要停止數據類型強迫轉換。Dictionary<K,V>經由過程鍵取值的TryGetValue辦法,此辦法包含兩個參數,一個是要查詢的鍵,另外一個是獲得的值,留意值後面應用out症結字。
留意:應用TryGetValue辦法時,參數必定要應用out症結字,不然編譯掉敗。