首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IDictionary<string、string>或NameValueCollection

IDictionary<string、string>或NameValueCollection
EN

Stack Overflow用户
提问于 2009-03-06 01:34:45
回答 4查看 11.6K关注 0票数 32

我有一个场景,在这个场景中,我可以使用NameValueCollection或IDictionary。但我想知道哪一个在性能方面会更好。

--使用NameValueCollection

代码语言:javascript
复制
NameValueCollection options()
{
    NameValueCollection nc = new NameValueCollection();

    nc = ....; //populate nc here

    if(sorting)
       //sort NameValueCollection nc here

    return nc;
}

--使用IDictionary

代码语言:javascript
复制
IDictionary<string, string> options()
{
    Dictionary<string, string> optionDictionary = new Dictionary<string, string>();

    optionDictionary = ....; //populate

    if(sorting)
       return new SortedDictionary<string, string>(optionDictionary);
    else
       return optionDictionary;
}
EN

回答 4

Stack Overflow用户

发布于 2009-03-06 02:02:52

这些集合类型不能完全互换:NameValueCollection允许通过整数索引进行访问。如果你不需要这个功能,你就不应该使用NameValueCollection,因为索引不是“免费”的。

根据您正在查看的字符串数量,我会考虑使用Hashtable<string, string>IDictionary<string, string>。Krzysztof Cwalina在这里讨论了其中的微妙之处:http://blogs.gotdotnet.com/kcwalina/archive/2004/08/06/210297.aspx

票数 31
EN

Stack Overflow用户

发布于 2009-03-06 03:30:15

与NameValueCollection不同,IDictionary的另一个优点是它不是特定于实现的。

票数 9
EN

Stack Overflow用户

发布于 2009-03-06 04:19:20

我同意fatcat和lomaxx的观点(并对这两个答案都投了赞成票)。我要补充的是,在选择集合类型时,集合类型的性能最有可能是最后一个考虑因素。使用最适合您使用需求的类型。如果你处于代码的性能关键部分(很可能不是),那么唯一的答案就是衡量每一种情况--不要相信互联网,相信数字。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/617443

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档