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

    { }

  • 相关阅读:
    EL表达式具体解释
    Android 实战美女拼图游戏 你能坚持到第几关
    redis sentinel安装及配置(单机版)
    ElasticSearch scroll查询 api
    springboot自动配置原理
    kafka实践
    Springboot mybatis
    计算机原理
    快速排序算法
    maven常见报错问题
  • 原文地址:https://www.cnblogs.com/LiTZen/p/11857745.html
Copyright © 2011-2022 走看看