KeyValuePair vs. NameValueCollection

本文关键字:NameValueCollection vs KeyValuePair | 更新日期: 2023-09-27 17:57:51

还有其他问题,如KeyValuePair与IDictionary,但我觉得这一个略有不同。

NameValueCollection采用字符串键和字符串值。

KeyValuePair就像一本字典,你可以告诉它键和值的类型

我不明白NameValueCollection为什么存在。用字符串类型初始化KeyValuePair似乎就足够了。我还注意到NameValueCollection还有一些可用的方法,但为什么不将两个类合并为一个呢?

KeyValuePair vs. NameValueCollection

KeyValuePair不像字典。它只是一个包含键和值的元组。

NameValueCollection相当于IList<KeyValuePair<string,IList<string>>>的包装器(请注意,NameValueCollection早于泛型)-像Get(string)这样的操作是O(n),可以通过索引提取项,每个Key映射到一个或多个值(这与Dictionary<string,string>不同)。

NameValueCollection文档中对此进行了解释:

此类可用于标题、查询字符串和表单数据。

NameValueCollection的较新的

一些类似行为"替换"数据结构是Lookup<string,string>。(然而,它并不直接支持与spender注释中不可变的操作相同的操作。)

快乐的编码。

NameValueCollection存在于.NET 1.0和1.1中,KeyValuePair是一种泛型类型,直到2.0才添加到.NET中。System.Collections.Specialized All中的所有类都早于泛型的添加;它包含某些强类型(如果您愿意的话,可以专门化),当用户不必从对象转换为字符串时,您可以使用这些强类型。

KeyValuePair是用于迭代Dictionary 的组件
var dictionary = new Dictionary<int,long>
foreach(var kvp in dictionary)
{
    // kvp is KeyValuePair<int,long>. kvp.Key is the int key and kvp.Value is the long value for the key
}

NameValueCollection是可索引的。

相关文章:
  • 没有找到相关文章