把不同的:

是有一个很好的理由为选择一个松散的类型的集合在一个类安全的一个(HashTable与词典)?他们还在那里仅仅用兼容性?

就我所了解、一般收藏的不仅仅是安全类型,但是他们的表现更好。


这里有一个全面的条文主题: 一个广泛的审查的数据结构,使用C#2.0.

有帮助吗?

解决方案

非一般的集合是如此过时,他们已经从本节中使用的Silverlight和现场网。

其他提示

还有问题COM可见性-COM互操作不能被用于与泛型

前进的唯一般收藏的应用。还有的利益,避免拳/拆箱的类型的集合。这是ineffecient,特别是当你有收藏价值的类型转换系统。目时储存在收集的,因此储存的价值观堆上,而不是调用栈.

关于使用非通用的集合,用于储存异构收藏的东西,你可以随时使用名单<object> ,以完成同样的事情。仅仅出于这个原因,我想说几乎没有理由在所有接触的非通用收集过一次。

唯一的例外就是维持兼容性系统的其他语言编写的,或者对以前版本的.净框架,但这是一个漂亮的"锋利"的情况下,如果你问我。

我可以告诉你,XAML化的集依赖于他们执行任IList或IDictionary,所以非通用的集会与我们一些时间来。

我不会跳,并说,已经过时或即将被删除。这是真的,你应该避免使用非通用的藏品除非你有一个原因 不使用通用的版本。成千上万的线的遗产(不遗产)的代码还是漂浮在(并将于年),支持非通用的集合,如arraylist中.由于这些人的 集中。净1.0和1.1,它已经广泛使用(和虐待)在整个一年。

我仍然偶尔有一个老O/R映编写的。净1.1返回IList的对象。我有一个方法,该方法不会转换为通用的清单<>,这是不是有效的,但这就是事情是这样的。

如果你需要储存不同的对象相同的阵列(奇怪的但是可能的)你 需要一个非通用的集合。刑罚的拳击和拆箱的东西你会必须支付无论如何。

不要害怕使用他们,如果你觉得你有必要。

有可能的情况你需要保存对象不明的类型,或者对象的多个不同的类型,但是如果你确实知道的对象的类型,你想商店然后我看不到的一个原因不要使用通用的版本。

编辑:作为评论你可以使用 List<Object> -doh!

是的,我了解他们只有兼容性与现有的产品。你应该始终使用的类型安全的版本(即使用的系统。集合。通过系统。集的).

http://msdn.microsoft.com/en-us/library/ms379564.aspx

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top