zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    iOS APP上线流程
    iOS开发:cocoapods的使用
    Swift:函数和闭包
    OC中单例的各种写法及基本讲解
    iOS:死锁
    iOS传值方式:属性,代理,block,单例,通知
    iOS支付
    Binary Tree Preorder Traversal——经典算法的迭代求解(前序,中序,后序都在这里了)
    Largest Number——STL的深层理解
    const、volatile、mutable的用法
  • 原文地址:https://www.cnblogs.com/nevermore-wd/p/15112741.html
Copyright © 2011-2022 走看看