where T:new() 是什么意思

 

经常看到方法后面加where T:new() ,下面来解释下

比如如下这个方法
  protected static T CreateNewInstance<T>() where T : new() 
        
            return new T(); 
        }

 

解释如下:

T后面跟的是泛型约束,啥叫泛型约束,就是你必须要符合这个规则来,不然就不让你编译通过 。

后面的new()代表这个T 必须有一个无参的构造函数,

当然一个新建的class。这个类做为T,也是可以编译通过的。

因为如果类中没有构造函数会默认就加一个无参的构造函数,刚好符合这个约束。

比如

Public Class People{}

这个people 做为T默认是可以编译通过的。因为他等同于

Public Class People(public People(){})

但如果有一个这样的People就会编译不通过了。

Public Class People(public People(string s){}})

posted @ 2014-04-18 09:33  水木  阅读(2542)  评论(0编辑  收藏  举报