• 泛型的使用


    类型参数T

    泛型的类型参数T可以看作是一个占位符,它不是一种类型,它仅代表了某种可能的类型。类型参数T可以在使用时用任何类型来代替。

    类型参数T的命名准则如下:

    使用描述性名称命名泛型类型参数,除非单个字母名称完全可以让人了解它表示的含义,而描述性名称不会有更多的意义。

    public interface ISessionChannel<TSession>

    {

    TSession session{ get;}

    }

    泛型接口

    Interface 接口名 <T>

    {

    接口体

    }

    在实例化泛型时也可以使用约束对类型参数的类型种类施加限制,约束是使用where上下文关键字指定的。下面列出了6种类型的约束:

    a).T:结构——类型参数必须是值类型。可以指定除Nullable以外的任何值类型。

    b).T:类——类型参数必须是引用类型。这一点也使用于任何类、接口、委托或数组类型。

    c).T:new()——类型参数必须具有无参数的公共构造函数。当与其他约束一起使用时,new()约束必须最后指定。

    d).T:<基类名>——类型参数必须是指定的基类或派生自指定的基类。

    e).T:<接口名称>——类型参数必须是指定的接口或实现指定的接口。可以指定多个接口约束。约束接口也可以是泛型的。

    f).T:U——为T提供的类型参数必须是为U提供的参数或派生自为U提供的参数。这称为裸类型约束。

    // 创建一个泛型接口

    public interface IGenericInteface<T>

    {

    T CreateInstance();

    }

    // 实现上面泛型接口的泛型类

    // 派生约束 where T:TI(T要继承自TI)

    // 构造函数约束where T:new()(T可以实例化)

    public class Factory<T, TI>: IGenericInteface<TI> where T:TI,new()

    {

    public TI CreateInstance()

    {

    return new T();

    }

    }

    泛型方法

    修饰符 void 方法名<类型参数 T>

    {

    }

    注:泛型方法可以使用多类型参数进行重载。

    Public static int Find<T>(T[] items, T item)

    {}

    Int I = Finer.Find<int>(new int[]{1,2,3,4,5,6}, 6);

    《C#从入门到精通》读后总结

  • 相关阅读:
    网站压力测试工具----webbench
    skin.xml
    krpano和react的结合展示
    swiper的相关用法
    js的hover实现方法。
    js的slice和split和splice和substring和substr的区别
    使用JSSDK分享页面
    微信jssdk分享功能开发
    点击复制
    JS的document.all函数使用 示例
  • 原文地址:https://www.cnblogs.com/hmliang/p/5325235.html
Copyright © 2020-2023  润新知