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

  • 相关阅读:
    day15—jQuery UI之widgets插件
    day14—jQuery UI 之dialog部件
    day13—CSS之导航栏
    day12—jQuery ui引入及初体验
    day11—前端学习之我不想看书
    struts2的action方法匹配以及通配符的使用
    Java中的static
    ActiveMQ的简单使用
    MS DOS 常用命令整理
    IntelliJ IDEA 中 Ctrl+Alt+Left/Right 失效
  • 原文地址:https://www.cnblogs.com/nevermore-wd/p/15112741.html
Copyright © 2011-2022 走看看