2012-03-29 56 views
6

在java中,可以綁定泛型類型的類型參數。這是可以做到這樣的:在C#中定義有界泛型類型參數

class A<T extends B>{ 
... 
} 

所以,對這個通用類A的類型參數應該是B或B.

的子類,我不知道如果C#有類似的功能。如果有人讓我知道,我很感激。

謝謝,

+3

'A級其中T:B {...}'我想。有一陣子了。 – asawyer 2012-03-29 20:45:26

回答

16

C#中的相同是:

class A<T> where T : B 
{ 

} 

另見"Constraints on Type Parameters"(MSDN)用於約束的一般了很好的概述。

+0

當我完成我的任務時,打敗我幾秒,爲MSDN鏈接+1。 – 2012-03-29 20:48:27

9

非常相似:

public class A<T> where T : B 
{ 
    // ... 
} 

這可以用於約束噸至是一個亞類或實施B的(如果B的界面)。

此外,可以約束噸至是引用類型,值類型,或者需要一個默認的構造函數:

where T : class  // T must be a reference type 
where T : struct // T must be a value type 
where T : new()  // T must have a default constructor 
3

當然可以:

class A<T> where T: B 
{ 
    // ... 
}