常常看到方法后面加where T:new() ,下面来解释下函数
好比以下这个方法
protected
static
T CreateNewInstance<T>() where T :
new
()
{
return
new
T();
}
解释以下:spa
T后面跟的是泛型约束,啥叫泛型约束,就是你必需要符合这个规则来,否则就不让你编译经过 。code
后面的new()表明这个T 必须有一个无参的构造函数,string
固然一个新建的class。这个类作为T,也是能够编译经过的。编译
由于若是类中没有构造函数会默认就加一个无参的构造函数,恰好符合这个约束。class
好比泛型
Public Class People{}构造函数
这个people 作为T默认是能够编译经过的。由于他等同于方法
Public Class People(public People(){})static
但若是有一个这样的People就会编译不经过了。
Public Class People(public People(string s){}})