• C#泛型


        熟悉面向对象编程的开发人员都深谙这种编程的好处,其中之一就是“代码重用”,它大大提高了开发效率。泛型是CLR和编程语言提供的一种特殊机制,它支持另一种形式的代码重用,即“算法重用”。

        CLR允许创建泛型引用类型和泛型值类型,还允许创建泛型接口和泛型委托,CLR允许在引用类型、值类型或接口中定义泛型方法。

        泛型列表算法的FCL类称为List<T>(读作List of Tee)。这个类是在System。Collections.Generic命名空间中定义的。泛型List类的设计者紧接在类名后添加了<T>,表明操作的是一个未指定的数据类型,T表示变量名,也称为类型参数(type parameter)。

        根据Microsof的设计原则,泛型参数变量要么称为T,要么至少以大写T开头。大写T代表类型(Type),就像大写I代表接口(Interface)一样。

        List<DateTime> dtlist=new List<DateTime>(),使用泛型类型或方法时,指定的具体数据类型称为类型实参(type argument)。

        泛型为开发人员提供的优势有:源代码保护、类型安全、更加清晰的代码和最佳的性能。

      泛型最明显的应用就是集合类。FCL已经定义了几个泛型集合类,大多数都在System.Collections.Generic和System.Collections.ObjectModel命名空间中。要使用线程安全的泛型集合类,可以到System.Collections.Concurrent命名空间去寻找。

        泛型类型参数的类型称为开放类型(open type)如果为所有类型实参传递的都是实际数据类型,类型就称为封闭类型(closed type)例如:DictionaryStringKey<T>为开发类型,DictionaryStringKey<Guid>为封闭类型。

        元数,也就是类型要求的类型参数的个数。DictionaryStringKey<T>为一元;DictionaryStringKey<T1,T2>为二元,以此类推。

        泛型类型同一性。using DateTimeList=System.Collections.Generic.List<System.DateTime>;Boolean sameType=(typeof(List<DateTime>)==typeof(DateTimeList));加上using才不会丧失类型同一性(identity)和相等性(equivalence)

    泛型类或接口

    描述

    对应的非泛型类型

    Collection<T>

    ICollection<T>

    为泛型容器提供基类

    CollectionBase

    ICollection

    Comparer<T>

    IComparer<T>

    IComparable<T>

    比较两个相同泛型类型的对象是否相等、可排序。

    Comparer

    IComparer

    IComparable

    Dictionary<K, V>

    IDictionary<K,V>

    表示用键组织的键/值对集合。

    Hashtable

    IDictionary

    Dictionary<K, V>.KeyCollection

    表示Dictionary<K, V>中键的集合。

    None.

    Dictionary<K, V>.ValueCollection

    表示Dictionary<K, V>中值的集合。

    None.

    IEnumerable<T>

    IEnumerator<T>

    表示可以使用foreach 迭代的集合。

    IEnumerable

    IEnumerator

    KeyedCollection<T, U>

    表示有键值的集合。

    KeyedCollection

    LinkedList<T>

    表示双向链表。

    None.

    LinkedListNode<T>

    表示LinkedList<T>中的节点。

    None.

    List<T>

    IList<T>

    使用大小可按需动态增加的数组实现 IList 接口

    ArrayList

    IList

    Queue<T>

    表示对象的先进先出集合。

    Queue

    ReadOnlyCollection<T>

    为泛型只读容器提供基类。

    ReadOnlyCollectionBase

    SortedDictionary<K, V>

     表示键/值对的集合,这些键和值按键排序并可按照键访问,实现IComparer<T>接口。

    SortedList

    Stack<T>

    表示对象的简单的后进先出集合。

    Stack

  • 相关阅读:
    ~~网络编程(六):自定义报头~~
    ~~网络编程(五):粘包现象~~
    ~~网络编程(四):socket套接字~~
    ~~网络编程(三):TCP/UDP~~
    ~~网络编程(二):层级初识~~
    Java的异常处理方式
    Java中的泛型
    Collection接口综述
    匿名内部类和局部内部类只能访问final变量的原因
    Java内部类
  • 原文地址:https://www.cnblogs.com/ice-baili/p/5879144.html
Copyright © 2020-2023  润新知