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> peList = 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
{ }

 

在MSDN详细说明:http://msdn.microsoft.com/zh-cn/library/bb384067.aspx

转载于:https://www.cnblogs.com/a164266729/p/5301541.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值