zoukankan      html  css  js  c++  java
  • C#、Unity3D泛型约束

    Where T:class 泛型类型约束

    对于一个定义泛型类型为参数的函数,如果调用时传入的对象为T对象或者为T的子类,在函数体内部如果需要使用T的属性的方法时,我们可以给这个泛型增加约束;

    复制代码
    //父类子类的定义
    public class ProductEntryInfo
        {
            [Description("商品编号")]
            public int ProductSysNo { get; set; }  
           //more
        }
    
        public class ProductEntryInfoEx : ProductEntryInfo
        {
           
            [Description("成份")]
            public string Component { get; set; }  
           //more
        }
    
    //方法:
    private static string CreateFile<T>(List<T> list) where T:ProductEntryInfo
     { 
       int productSysNo =list[0].ProductSysNo 
     } 
    
    //调用:
    List<ProductEntryInfo> peList = new List<ProductEntryInfo>();
    string fileName = CreateFile( peList);
    
    List<ProductEntryInfoEx> checkListAll = new List<ProductEntryInfoEx>();   
    string fileNameEx = CreateFile(checkListAll);
    复制代码

    这样就可以实现上边的CreateFile方法了

      这样类型参数约束,.NET支持的类型参数约束有以下五种:

        where T : struct  T必须是一个结构类型
        where T : class   T必须是一个类(class)类型
        where T : new()    T必须要有一个无参构造函数
        where T : NameOfBaseClass | T必须继承名为NameOfBaseClass的类
        where T : NameOfInterface | T必须实现名为NameOfInterface的接口

    分别提供不同类型的泛型约束。

    可以提供类似以下约束

    class MyClass<T, U>

        where T : class

        where U : struct

    { }

  • 相关阅读:
    AD7606笔记
    转Keil 中使用 STM32F4xx 硬件浮点单元
    旋转编码器
    PT100/PT1000
    电压跟随器
    段式液晶驱动方法
    物联网的架构
    物联网的操作系统
    C8051开发环境
    解决time命令输出信息的重定向问题
  • 原文地址:https://www.cnblogs.com/LiTZen/p/11857745.html
Copyright © 2011-2022 走看看