泛型中new()约束的用法



一、.NET中支持的类型参数约束有以下几种


where T : struct              T必须是一个结构类型
where T : class               T必须是一个类(class)类型,不能是结构(structure)类型
where T : new()               T必须要有一个无参构造函数
where T : NameOfBaseClass     T必须继承名为NameOfBaseClass的类
where T : NameOfInterface     T必须实现名为NameOfInterface的接口

 


二、泛型中new()约束基本形式

class A<T> where T : new() 

 


三、泛型中new()约束实例

 

public class A<T> where :class,new()

{

      public void Func()

      {

            T t=new T();

       }

}



四、泛型中new()约束的注意事项

 

1、泛型定义中有new()约束关键字时,表示必须有一个公共的无参的构造函数。简单点说就是你传递一个类代替T的时候,这个类必须有一个构造函数,且必须是公共的无参的。

2、当有多个约束时候,new()关键字必须放到坐后面。

3、在使用new()约束时,可以通过调用该无参构造函数来创建对象。 

 



五、多个泛型类型参数

对于多个类型参数,每个类型参数都使用一个 where 子句

 
class Dictionary<TKey, TVal>
    where TKey : IComparable, IEnumerable,new()
    where TVal : IMyInterface,new()
   {
    public void Add(TKey key, TVal val)
    {
    }
}




文章转载自: 泛型中new()约束   http://www.studyofnet.com/news/988.html

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值