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

    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);
    View Code

    这样就可以实现上边的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

    { }

     

     

  • 相关阅读:
    按钮字体颜色的设置
    异常
    数据存储
    SQLiteOpenHelper
    MVC
    在单线程模型中 Message、Handler、Message Queue、Looper 之间的关系
    ListView 的优化方案
    fragment生命周期及优点
    ANR
    Android系统架构
  • 原文地址:https://www.cnblogs.com/peterYong/p/11372060.html
Copyright © 2011-2022 走看看