常常看到方法後面加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){}})