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

  • 相关阅读:
    delphi xe10.4新功能介绍
    python tornado 增加数据库连接池
    sql server 自增型字段 在有数据的情况下 修改 标识种子
    c++定时重启某个windows程序
    mssql server 查看作业中执行了哪些脚本
    mssql server 13位时间戳互转
    delphi 13位时间戳互转
    博客开通啦
    java获取当前应用的运行信息(内存,线程,运行时间,状态等)
    java使用websocket,并且获取HttpSession,源码分析
  • 原文地址:https://www.cnblogs.com/nevermore-wd/p/15112741.html
Copyright © 2011-2022 走看看