在c#中处理关联数组的最简单方法是什么?

Mic*_*ael 47 c# associative-array

我没有很多C#的经验,但我习惯在PHP中使用关联数组.

我在C#中看到List类和数组可用,但我想关联一些字符串键.

处理这个问题最简单的方法是什么?

谢谢!

dcp*_*dcp 82

使用Dictionary类.它应该做你需要的.参考在这里.

所以你可以这样做:

IDictionary<string, int> dict = new Dictionary<string, int>();
dict["red"] = 10;
dict["blue"] = 20;
Run Code Online (Sandbox Code Playgroud)

  • @KeithS如果这是必需的功能,那么有一个[OrderedDictionary](http://msdn.microsoft.com/en-us/library/system.collections.specialized.ordereddictionary.aspx). (9认同)
  • 理解字典不允许线性索引(除非你是如何键入它的),所以在上面的例子中,`dict [0]`(尝试获取Dictionary的第一个元素)将不会编译.你可以通过以下几种方式解决问题; 最简单的方法是使用Linq一次枚举一个Dictionary的KeyValuePair对象.但是不保证订单(或者至少它只能通过实施细节得到保证). (2认同)

DAG*_*DAG 22

字典可以工作,但.NET内置了关联数组.一个实例是NameValueCollection类(System.Collections.Specialized.NameValueCollection).

与字典相比,一个小优点是,如果您尝试读取不存在的键,它将返回null而不是抛出异常.以下是两种设置值的方法.

NameValueCollection list = new NameValueCollection();
list["key1"] = "value1";

NameValueCollection list2 = new NameValueCollection()
{
    { "key1", "value1" },
    { "key2", "value2" }
};
Run Code Online (Sandbox Code Playgroud)

  • 实际上,`NameValueCollection`是一个字典,键和值都限于字符串。恕我直言,更好地学习使用`Dictionary &lt;TKey,TValue&gt;`,因为您可以同时将其用于字符串和其他对象。说“字典可以工作,但是.NET内置了关联数组”,这意味着“字典”不是“关联数组”,这是荒谬的。字典与NameValueCollection一样,与关联数组一样多。 (2认同)