程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#泛型Dictionary的用法實例詳解

C#泛型Dictionary的用法實例詳解

編輯:C#入門知識

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#法式設計有所贊助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved