泛型和System.Collections迁移到.NET2.0+后,还有什么理由继续使用systems.Collections命名空间(除了维护遗留代码)?是否应该始终使用泛型命名空间?在大多数情况下,通用集合比非通用集合执行得更快,并为您提供强类型集合的好处。比较System.Collections和System.Collections.Generic中可用的集合,您会得到以下“迁移”:Non-genericgenericequivalent-----------------------------------------------------------ArrayListListBitArrayN/A.CaseInsensitiveComparerN/A。CollectionBaseCollectionComparerComparerDictionaryBaseDictionaryHashtableDictionaryQueueQueueReadOnlyCollectionBaseReadOnlyCollectionSortedListSortedListStackStackDictionaryEntryKeyValuePairICollectionN/A(使用IEnumerable或任何扩展它的东西)IComparerIComparerIDictionaryIDictionaryIEnumerableIEnumeratorIEnumerableIEnumerComparatorIEqualityList是不可变的IEquality可以更改成员的内容集合),而ICollection是可变的。这使得接口在名称上相似,而ICollection和IEnumerable仅略有不同。从该列表中,唯一没有通用对应物的非通用类是BitArray和CaseInsensitiveComparer。在某些情况下,通用容器的性能优于遗留容器。无论如何,它们至少应该和旧的一样好。它们有助于捕获编程错误。这是更有用的抽象和更好的性能的罕见组合,因此没有太多理由避免它们。只有当你被迫使用一个蹩脚的库时,你才能使用它,它是在泛型之前编写的。我看到了对来自c#团队的AndersHejlsberg的采访,他被问到是否对以前的.net版本有什么遗憾。他首先提到的是asp.net1.0中没有泛型。没有它意味着他们必须实施坚持.net库并很快成为遗留代码的变通办法。我从不使用System.Collections命名空间,从他的陈述来看,这似乎是正确的路径。我能想到的关于使用泛型的唯一坏处是方差,例如,如果你有一个List并且你想将它传递给一个接受List的方法,你不能因为List不能直接转换为列表。此问题已在.NET4.0中得到解决。以上就是C#学习教程分享的全部内容:泛型和System.Collections。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处:
