where T:new() 是什麼意思

 

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

相關文章
相關標籤/搜索