我對C#沒有太多的經驗,我從PHP和關聯數組中使用。在c#中處理關聯數組的最簡單方法是什麼?
我看到在C#中是List類和原始數組,但我想在某個時刻關聯一些字符串鍵。
處理這個問題的最簡單方法是什麼?
Thx!
我對C#沒有太多的經驗,我從PHP和關聯數組中使用。在c#中處理關聯數組的最簡單方法是什麼?
我看到在C#中是List類和原始數組,但我想在某個時刻關聯一些字符串鍵。
處理這個問題的最簡單方法是什麼?
Thx!
使用Dictionary類。它應該做你需要的。 參考文獻是here。
所以,你可以做這樣的事情:
IDictionary<string, int> dict = new Dictionary<string, int>();
dict["red"] = 10;
dict["blue"] = 20;
瞭解字典不允許使用線性索引(除非這是鍵入它的方式),所以在上面的例子中,'dict [0]'(嘗試獲取字典的第一個元素)將不會被編譯。你可以通過幾種方法解決這個問題。最簡單的方法是使用Linq逐個枚舉字典的KeyValuePair對象。但是,訂單不能保證(或者至少只能通過實現細節來保證)。 – KeithS 2012-04-20 17:03:28
@KeithS然而,如果需要的功能是[OrderedDictionary](http://msdn.microsoft.com/en-us/library/system.collections.specialized.ordereddictionary.aspx)。 – Servy 2012-04-20 17:06:25
完全正確,工作! – 2013-06-24 17:41:33
字典的工作,但.NET內置了關聯數組一個實例是NameValueCollection類(System.Collections.Specialized.NameValueCollection)。
與字典相比略有優勢是,如果您試圖讀取不存在的密鑰,它將返回null而不是拋出異常。以下是設置值的兩種方法。
NameValueCollection list = new NameValueCollection();
list["key1"] = "value1";
NameValueCollection list2 = new NameValueCollection()
{
{ "key1", "value1" },
{ "key2", "value2" }
};
@Servy:只是雞蛋裏挑骨頭的一些術語,** **不,這是一個**關聯數組**。拉杜是正確的。 http://en.wikipedia.org/wiki/Associative_array。此外,還有很多種語言,其中數組沒有被數字索引; JavaScript是一個。當我們批評術語時:**關聯數組**不需要作爲**哈希表**來實現。您將*抽象數據類型*與*實現細節*混淆。例如,一個關聯數組可以通過平衡二叉樹實現。 – 2012-04-20 16:57:53
感謝Eric的澄清。 – Servy 2012-04-20 17:04:02