• 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

    { }

  • 相关阅读:
    javascript_数组
    Javascript_函数
    JavaScript思维导图
    django 中session的存储和获取
    使用 PyCharm 在centos 部署代码
    mac下使用async-profiler
    Mac系统如何清理mysql
    Java-多线程
    Java内部类
    WinForm使用发布方式进行安装的安装目录
  • 原文地址:https://www.cnblogs.com/LiTZen/p/11857745.html
Copyright © 2020-2023  润新知