• 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

  • 相关阅读:
    实习第十天
    实习第九天
    实习第八天
    武汉第七天
    武汉第六天
    实习第五天
    实习第四天
    NSArray
    NSString
    NSObject
  • 原文地址:https://www.cnblogs.com/nevermore-wd/p/15112741.html
Copyright © 2020-2023  润新知