我有一个场景,在这个场景中,我可以使用NameValueCollection或IDictionary。但我想知道哪一个在性能方面会更好。
--使用NameValueCollection
NameValueCollection options()
{
NameValueCollection nc = new NameValueCollection();
nc = ....; //populate nc here
if(sorting)
//sort NameValueCollection nc here
return nc;
}--使用IDictionary
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;
}发布于 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。
发布于 2009-03-06 03:30:15
与NameValueCollection不同,IDictionary的另一个优点是它不是特定于实现的。
发布于 2009-03-06 04:19:20
我同意fatcat和lomaxx的观点(并对这两个答案都投了赞成票)。我要补充的是,在选择集合类型时,集合类型的性能最有可能是最后一个考虑因素。使用最适合您使用需求的类型。如果你处于代码的性能关键部分(很可能不是),那么唯一的答案就是衡量每一种情况--不要相信互联网,相信数字。
https://stackoverflow.com/questions/617443
复制相似问题