有谁知道System.Collections.Specialized.StringDictionary对象和System.Collections.Generic.Dictionary之间的实际差异是什么?
我过去一直使用它们而没有考虑哪种方法表现更好,与Linq更好地工作,或者提供任何其他好处.
关于为什么我应该使用一个而不是另一个的任何想法或建议?
Dictionary
是一种更现代的方法.它实现了IEnumerable
它,更适合LINQy的东西.
StringDictionary
是旧学校的方式.在仿制药之前它就在那里.我只会在与遗留代码接口时才使用它.
还有一点.
返回null:
StringDictionary dic = new StringDictionary(); return dic["Hey"];
这引发了一个异常:
Dictionarydic = new Dictionary (); return dic["Hey"];
我认为StringDictionary已经过时了.它存在于框架的v1.1中(在泛型之前),所以它当时是一个优秀的版本(与非泛型字典相比),但在这一点上,我不相信它有任何特定的优点在字典.
但是,StringDictionary有一些缺点.StringDictionary会自动降低您的键值,并且没有控制它的选项.
看到:
http://social.msdn.microsoft.com/forums/en-US/netfxbcl/thread/59f38f98-6e53-431c-a6df-b2502c60e1e9/
正如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比现代与老派差异更重要.