当前位置:编程学习 > ASP.NET> 正文

泛型中new()约束

时间:2015-7-23类别:编程学习

泛型中new()约束

泛型中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();
    
           }
    
    }
    
    		
  •  
  •  
  • 
    //泛型类T的一个实现类Test
    
    public class Test
    
    {
    
            public Test(int a)
    
            {
    
     
    
            }
    
    }
    
    				
  • 此时不能编译通过

    解决方案:在Test类中加入无参构造函数即可。


     

    四、泛型中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)
        {
        }
    }
    
    		
  •  

    标签:
    上一篇下一篇

    猜您喜欢

    热门推荐