• 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 between object 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, a List<int> stores its data
      in an int[]. That's far better than storing the data in object[] 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

  • 相关阅读:
    20145209 《信息安全系统设计基础》第5周学习总结
    20145209 《信息安全系统设计基础》第3周学习总结
    20145209 《信息安全系统设计基础》第1周学习总结
    20145209 《信息安全系统设计基础》第0周学习总结
    单调栈&单调队列入门
    GYM 101617 F
    codeforces 13 D
    codeforces 13 b
    G102040I
    19南昌网络赛L
  • 原文地址:https://www.cnblogs.com/nevermore-wd/p/15112741.html
Copyright © 2020-2023  润新知