1.泛型

cwb8023 / 2023-07-25 / 原文

基本知识

  1. 泛型需要编译器支持+JIT支持,不是语法糖

泛型约束

//约束不能是密封类 
 public static void show<T>(T value)
            where T :People
            where T:class
            where T:struct
            where T:new() //无参数构造函数约束
        {
            Console.WriteLine("This is {0},name = {1},age={2}", typeof(CwbGeneric), value.name, value.age);
            value = default(T); //根据运行时类型自动初始化
        }

协变in 逆变 out

    /*out  限制  泛型 接口 委托  被out修饰的值 只能作为返回值
     Func<鸟> s = new Func<麻雀>;    
     */
     /*in 修饰的泛型T 只能作为参数
     如 Ifunc<in t> 为自己定义的接口
     而  funcClass:Ifunc
     Ifunc<麻雀> s = new FuncClass<鸟>(); //因为in确定 传入值一定是
     Ifunc<麻雀> s = new FuncClass<麻雀>();
     */