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

    { }

  • 相关阅读:
    再说ASP.NET 缓存
    asp.net 动态加载的用户控件属性传id值问题
    关于四季学期数据库设计问题
    如何在IIS里对网站限速
    命名空间与程序集
    多GridView页面中使用AJAX的优化方法
    OutputCache cookies 问题
    速度优化之GZIP对jscss压缩
    canphp框架论坛成立www.canphp.com/bbs/index.php现在论坛内测中
    js selection对象使用方法
  • 原文地址:https://www.cnblogs.com/LiTZen/p/11857745.html
Copyright © 2011-2022 走看看