泛型中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()约束实例

 
[csharp] view plain copy
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

posted on 2018-01-26 06:13  新西兰程序员  阅读(577)  评论(0编辑  收藏  举报