泛型中Where T:Class和Where T:new()的使用與區別


如下是泛型常用的寫法:

class A<T> where T:new()

這是類型參數約束,其中where表示對類型變量T的約束關系。

 

其中,最常用的當屬class和new()兩種約束。泛型可以是值類型也可以是引用類型,class表示這個T為引用類型new()表示這個泛型必須有構造函數否則不能使用

 

除了class和new()之外,還有其他的約束關系。.NET支持的類型參數約束有以下五種:

where T: class        // T必須是一個類(class)類型,不是結構(structure)類型
where T: new()        // T必須要有一個無參構造函數
where T: struct       // T必須是一個結構類型
where T: NameOfBaseClass    // T必須繼承名為NameOfBaseClass的類
where T: NameOfInterface    // T必須實現名為NameOfInterface的接口


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM