C#泛型Dictionary的用法實例詳解。本站提示廣大學習愛好者:(C#泛型Dictionary的用法實例詳解)文章只能為提供參考,不一定能成為您想要的結果。以下是C#泛型Dictionary的用法實例詳解正文
本文以實例情勢講述了C#中的泛型Dictionary的用法。具有很好的適用價值。分享給年夜家供年夜家參考。詳細以下:
泛型最多見的用處是泛型聚集,定名空間System.Collections.Generic 中包括了一些基於泛型的聚集類,應用泛型聚集類可以供給更高的類型平安性,還有更高的機能,防止了非泛型聚集的反復的裝箱和拆箱。
許多非泛型聚集類都有對應的泛型聚集類,上面是經常使用的非泛型聚集類和對應的泛型聚集類:
非泛型聚集類
泛型聚集類
ArrayList
List<T>
HashTable
DIctionary<T>
Queue
Queue<T>
Stack
Stack<T>
SortedList
SortedList<T>
我們用的比擬多的非泛型聚集類重要有 ArrayList類 和 HashTable類。我們常常用HashTable 來存儲將要寫入到數據庫或許前往的信息,在這之間要赓續的停止類型的轉化,增長了體系裝箱和拆箱的累贅,假如我們把持的數據類型絕對肯定的化 用 Dictionary<TKey,TValue> 聚集類來存儲數據就便利多了,例如我們須要在電子商務網站中存儲用戶的購物車信息( 商品名,對應的商品個數)時,完整可以用 Dictionary<string, int> 來存儲購物車信息,而不須要任何的類型轉化。
上面是簡略的例子,包含聲明,填充鍵值對,移除鍵值對,遍歷鍵值對:
Dictionary<string, string> myDic = new Dictionary<string, string>(); myDic.Add("aaa", "111"); myDic.Add("bbb", "222"); myDic.Add("ccc", "333"); myDic.Add("ddd", "444"); //假如添加曾經存在的鍵,add辦法會拋出異常 try { myDic.Add("ddd","ddd"); } catch (ArgumentException ex) { Console.WriteLine("此鍵曾經存在:" + ex.Message); } //處理add()異常的辦法是用ContainsKey()辦法來斷定鍵能否存在 if (!myDic.ContainsKey("ddd")) { myDic.Add("ddd", "ddd"); } else { Console.WriteLine("此鍵曾經存在:"); } //而應用索引器來負值時,假如建曾經存在,就會修正已有的鍵的鍵值,而不會拋出異常 myDic ["ddd"]="ddd"; myDic["eee"] = "555"; //應用索引器來取值時,假如鍵不存在就會激發異常 try { Console.WriteLine("不存在的鍵""fff""的鍵值為:" + myDic["fff"]); } catch (KeyNotFoundException ex) { Console.WriteLine("沒有找到鍵激發異常:" + ex.Message); } //處理下面的異常的辦法是應用ContarnsKey() 來斷定時刻存在鍵,假如常常要取健值得化最好用 TryGetValue辦法來獲得聚集中的對應鍵值 string value = ""; if (myDic.TryGetValue("fff", out value)) { Console.WriteLine("不存在的鍵""fff""的鍵值為:" + value ); } else { Console.WriteLine("沒有找到對應鍵的鍵值"); } //上面用foreach 來遍歷鍵值對 //泛型構造體 用來存儲健值對 foreach (KeyValuePair<string, string> kvp in myDic) { Console.WriteLine("key={0},value={1}", kvp.Key, kvp.Value); } //獲得值得聚集 foreach (string s in myDic.Values) { Console.WriteLine("value={0}", s); } //獲得值得另外一種方法 Dictionary<string, string>.ValueCollection values = myDic.Values; foreach (string s in values) { Console.WriteLine("value={0}", 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
獲得與指定的鍵相干聯的值。
<?xml version="1.0" encoding="UTF-8"?> <data> <resource key="123">foo</resource> <resource key="456">bar</resource> <resource key="789">bar</resource> </data> i want to put this into a Dictionary (sorted) as key value pairs. i.e: 123:foo, 456:bar...etc the keys are unknown. string s = "<data><resource key=/"123/">foo</resource><resource key=/"456/">bar</resource><resource key=/"789/">bar</resource></data>"; XmlDocument xml = new XmlDocument(); xml.LoadXml(s); XmlNodeList resources = xml.SelectNodes("data/resource"); SortedDictionary<string,string> dictionary = new SortedDictionary<string,string>(); foreach (XmlNode node in resources){ dictionary.Add(node.Attributes["key"].Value, node.InnerText); } linq to xml: var xml = XDocument.Load(...); var sequence = from e in xml.Root.Elements() let key = (string)e.Attribute("key") order by key select new { Key = key, Value = (string)e };
願望本文所述對年夜家的C#法式設計有所贊助。