c# - NameValueCollection 与 Dictionary<string,string>

标签 c# .net collections dictionary namevaluecollection

<分区>

Possible Duplicate:
IDictionary<string, string> or NameValueCollection

有什么理由我应该使用 Dictionary 而不是 NameValueCollection?

(在 C#/.NET 框架中)

选项 1,使用 NameValueCollection:

//enter values:
NameValueCollection nvc = new NameValueCollection()
{
  {"key1", "value1"},
  {"key2", "value2"},
  {"key3", "value3"}
};

// retrieve values:
foreach(string key in nvc.AllKeys)
{
  string value = nvc[key];
  // do something
}

选项 2,使用 Dictionary...

//enter values:
Dictionary<string, string> dict = new Dictionary<string, string>()
{
  {"key1", "value1"},
  {"key2", "value2"},
  {"key3", "value3"}
};

// retrieve values:
foreach (KeyValuePair<string, string> kvp in dict)
{
  string key = kvp.Key;
  string val = kvp.Value;
  // do something
}

对于这些用例,使用一个与另一个相比有什么优势吗?在性能、内存使用、排序顺序等方面有什么不同吗?

最佳答案

它们在语义上并不相同。 NameValueCollection Dictionary 可以有重复的键不能。

就个人而言,如果您没有重复的 key ,那么我会坚持使用 Dictionary .它更现代,使用IEnumerable<>这使得很容易与 Linq 混在一起查询。您甚至可以创建 Dictionary使用 Linq ToDictionary()方法。

关于c# - NameValueCollection 与 Dictionary<string,string>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3001108/

相关文章:

c# - 从子类递增数组

c# - 在后面的代码中设置 DataContext 的顺序

c# - 引用平等表现差异? ((object)obj1 == (object)obj2) 与 object.ReferenceEquals( obj1, obj2 )

c# - USSD接收报文解码

c# - 写入后 CPU 缓存行何时刷新到内存?

c# - 使用 Task.WhenAll 执行多个任务时 foo.Start() 出现错误

c# - .NET Bitmap.Load 方法在不同的计算机上产生不同的结果

java - Java TreeMap put() 方法的奇怪行为

java.util.ArrayList<T>

excel - VBA 集合检索数据但不显示值