C# Dictionary Base和Dictionary之间的区别<;Tkey,Tvalue>;

C# Dictionary Base和Dictionary之间的区别<;Tkey,Tvalue>;,c#,.net,collections,C#,.net,Collections,谁能告诉我DictionaryBase和genericDictionaryBase之间的区别,除了DictionaryBase是一个抽象类之外!它们都是强类型的,我在某个地方读到,泛型类在性能上优于非泛型类,应该是首选类,那么DictionaryBase的确切用途是什么呢? 这两门课几乎一样 任何形式的帮助都将不胜感激 感谢非泛型集合类型仍在.NET framework中的原因主要是为了向后兼容。通常,您应该尽可能使用泛型集合类型。Dictionarybase是实现非泛型IDictionary接

谁能告诉我
DictionaryBase
和generic
DictionaryBase
之间的区别,除了
DictionaryBase
是一个抽象类之外!它们都是强类型的,我在某个地方读到,泛型类在性能上优于非泛型类,应该是首选类,那么
DictionaryBase
的确切用途是什么呢? 这两门课几乎一样

任何形式的帮助都将不胜感激


感谢

非泛型集合类型仍在.NET framework中的原因主要是为了向后兼容。通常,您应该尽可能使用泛型集合类型。

Dictionarybase是实现非泛型IDictionary接口的基类,而Dictionary是实现泛型IDictionary接口的字典的泛型版本。与非泛型药相比,泛型药的使用更受欢迎

我想这会更有帮助

通常建议使用泛型集合,因为 类型安全的直接好处不必从 基本集合类型和实现特定于类型的成员。通用的 集合类型通常也比相应的 非泛型集合类型(优于派生的类型) 当集合元素 是值类型,因为对于泛型,不需要将 元素

也经过,

泛型类和方法结合了可重用性、类型安全性和 以非泛型同行无法做到的方式提高效率。 泛型最常用于集合和方法 对他们进行手术。.NET Framework类库的2.0版 提供新命名空间System.Collections.Generic,其中包含 几个新的基于泛型的集合类。建议 所有针对.NET Framework 2.0及更高版本的应用程序都使用 新的泛型集合类,而不是旧的非泛型集合类 对应


我刚刚完成了将一个旧的
DictionaryBase
IXmlSerializable
转换为generic
Dictionary(string,string)

最痛苦的区别是,对于通用的
字典
,当我为一个不存在的键调用
this[key]
时,我得到一个异常,说明该键不存在


DictionaryBase
上,我毫无例外地返回
null
。在我的例子中,这很痛苦,因为系统中充满了代码,在试图获取keys值之前,没有检查dictionary
是否包含skey
。假设我把序列化搞砸了,这让我更加痛苦。

因此,由于通用字典的存在,DictionaryBase没有实际的用途!!这两个类都是强类型的。。并且也从接口派生。除了DictionaryBase,System.Collections中的所有类都不是特定于类型的!!所以,区别只在于它们来自不同的接口,DictionaryBase是一个抽象类。那么非泛型类中泛型类的对应项不应该被淘汰吗!!!!!泛型IDictionary是非泛型IDictionary的泛型版本。泛型促进类型安全和效率。