换句话说:
是否有充分的理由选择松散类型的集合而不是类型安全的集合(HashTable vs. Dictionary)?它们是否仅用于兼容性?
据我所知,通用集合不仅类型安全,而且性能更好.
这是一篇关于该主题的综合文章:使用C#2.0对数据结构进行广泛的检查.
非泛型集合已过时,已从Silverlight和Live Mesh中使用的CoreCLR中删除.
COM可见性也存在问题 - COM interop不能与泛型一起使用
继续前进只应使用通用集合.还有避免在集合中装箱/取消装箱类型的好处.这是无效的,特别是当您拥有一组值类型时,这些值类型在存储在集合中时转换为System.Object,因此将值存储在堆而不是callstack上.
关于使用非泛型集合来存储异构的东西集合,你总是可以使用List
例外情况是保持与其他语言编写的系统的兼容性,或者与以前版本的.NET框架保持兼容,但如果你问我,这是一个非常"前卫"的案例.