当前位置:  开发笔记 > 编程语言 > 正文

StringDictionary vs Dictionary <string,string>

如何解决《StringDictionaryvsDictionary<string,string>》经验,为你挑选了4个好方法。

有谁知道System.Collections.Specialized.StringDictionary对象和System.Collections.Generic.Dictionary之间的实际差异是什么?

我过去一直使用它们而没有考虑哪种方法表现更好,与Linq更好地工作,或者提供任何其他好处.

关于为什么我应该使用一个而不是另一个的任何想法或建议?



1> Mehrdad Afsh..:

Dictionary是一种更现代的方法.它实现了IEnumerable它,更适合LINQy的东西.

StringDictionary是旧学校的方式.在仿制药之前它就在那里.我只会在与遗留代码接口时才使用它.


这两者之间是否有任何性能差异?
@thecoop现在没有从我这边提供的硬数据,但是有一次,当我对速度进行测试时,`StringDictionary`的表现较差(尽管多数情况下都不重要)。老实说,实际上,我以前有个想法,即StringDictionary是某种专门的集合,当string是关键时,它可以加快速度,而令我惊讶的是,它在我的测试中表现较差,我只用Google搜索学习它是非通用的

2> joshcomley..:

还有一点.

返回null:

StringDictionary dic = new StringDictionary();
return dic["Hey"];

这引发了一个异常:

Dictionary dic = new Dictionary();
return dic["Hey"];



3> Reed Copsey..:

我认为StringDictionary已经过时了.它存在于框架的v1.1中(在泛型之前),所以它当时是一个优秀的版本(与非泛型字典相比),但在这一点上,我不相信它有任何特定的优点在字典.

但是,StringDictionary有一些缺点.StringDictionary会自动降低您的键值,并且没有控制它的选项.

看到:

http://social.msdn.microsoft.com/forums/en-US/netfxbcl/thread/59f38f98-6e53-431c-a6df-b2502c60e1e9/


StringDictionary可以在Properites.Settings中使用,而Dictionary <string,string>则不能。无论是否过时,`StringDictionary`仍有一些用途。

4> Jeff Roe..:

正如Reed Copsey所指出的那样,StringDictionary会降低你的关键值.对我来说,这完全出乎意料,并且是一个表演者.

private void testStringDictionary()
{
    try
    {
        StringDictionary sd = new StringDictionary();
        sd.Add("Bob", "My name is Bob");
        sd.Add("joe", "My name is joe");
        sd.Add("bob", "My name is bob"); // << throws an exception because
                                         //    "bob" is already a key!
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

我正在添加这个回复,以吸引更多关注这个巨大的差异,IMO比现代与老派差异更重要.


如果出于某种原因想要使用Dictionary 的相同行为,可以使用:Dictionary ht = new Dictionary (StringComparer.OrdinalIgnoreCase); ht.Add("Bob","ff"); ht.Add("bob","ff"); //抛出异常
推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有