約束 | 說明 |
where T:struct | 對於結構約束,類型T必須是值類型 |
where T:class | 類約束指定類型T必須是引用類型 |
where T:IFoo | 指定類型T必須實現接口IFoo |
where T:Foo | 指定類型T必須派生自基類Foo |
where T:new() | 這是一個構造函數約束,指定類型T必須有一個默認構造函數 |
where T1:T2 | 這個約束也可以指定,類型T1派生自泛型類型T2 |
注意:只能為默認構造函數定義構造函數約束,不能為其他構造函數定義構造函數約束。
使用泛型類型還可以合並多個約束。where T:IFoo,new()約束和MyClass<T>聲明指定,類型T必須實現IFoo接口,且必須有一個默認構造函數。
注意:在C#中,where子句的一個重要限制是,不能定義必須由泛型類型實現的運算符。運算符不能再接口中定義。在where子句中,指定定義基類、接口和默認構造函數。