C#中的集合类型
2021/8/7 20:07:53
本文主要是介绍C#中的集合类型,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
DE0006: Non-generic collections shouldn't be used
Motivation
When .NET was created, generic data types didn't exist, which is why the
collection types in the [System.Collections
][collections] namespace are untyped. However, since then,
generic data types were introduced and thus a new set of collections
were made available in the [System.Collections.Generic
][generic] and
[System.Collections.ObjectModel
][objectmodel] namespaces.
Recommendation
For new code, you shouldn't use non-generic collections:
-
Error prone: since non-generic collections are untyped, it requires frequent
casting betweenobject
and the actual type you're expecting. Since the compiler
can't check that your types are consistent, it's easier to put the wrong type in
the wrong collection. -
Less performant: generic collections have the advantage that value types
don't have to be boxed as object. For instance, aList<int>
stores its data
in anint[]
. That's far better than storing the data inobject[]
as that
requires boxing.
The following table shows how the non-generic collection types can be
replaced by their generic counterparts from the [System.Collections.Generic
][generic] or
[System.Collections.ObjectModel
][objectmodel] namespaces:
Type | Replacement |
---|---|
[ArrayList ][arraylist] |
[List<T> ][list] |
[CaseInsensitiveComparer ][caseinsensitivecomparer] |
[StringComparer.OrdinalIgnoreCase ][ordinalignorecase] |
[CaseInsensitiveHashCodeProvider ][caseinsensitivehashcodeprovider] |
[StringComparer.OrdinalIgnoreCase ][ordinalignorecase] |
[CollectionBase ][collectionbase] |
[Collection<T> ][collection-1] |
[Comparer ][comparer] |
[Comparer<T> ][comparer-1] |
[DictionaryBase ][dictionarybase] |
[Dictionary<TKey, TValue> ][dictionary] or [KeyedCollection<TKey, TItem> ][keyedcollection] |
[DictionaryEntry ][dictionaryentry] |
[KeyValuePair<TKey, TValue> ][keyvaluepair] |
[Hashtable ][hashtable] |
[Dictionary<TKey, TValue> ][dictionary] |
[Queue ][queue] |
[Queue<T> ][queue-1] |
[ReadOnlyCollectionBase ][readonlycollectionbase] |
[ReadOnlyCollection<T> ][readonlycollection] |
[SortedList ][sortedlist] |
[SortedList<TKey, TValue> ][sortedlist-2] |
[Stack ][stack] |
[Stack<T> ][stack-1] |
https://github.com/dotnet/platform-compat/blob/master/docs/DE0006.md
这篇关于C#中的集合类型的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-11-15C#中怎么从PEM格式的证书中提取公钥?-icode9专业技术文章分享
- 2024-11-14云架构设计——如何用diagrams.net绘制专业的AWS架构图?
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#
- 2024-01-24Advanced .Net Debugging 1:你必须知道的调试工具
- 2024-01-24.NET集成IdGenerator生成分布式全局唯一ID