2013-06-03 44 views
3

我已經在我正在使用的庫中看到這種類型的定義。我對TObjectType:CSObject的位置感到瘋狂。很明顯,似乎我可以在約束中使用同一時間,因爲它工作並編譯,但這實際上意味着什麼?使用與關鍵字類定義相同的類型

public class CSList<TObjectType>: CSList, IList<TObjectType>, IList 
    where TObjectType: CSObject<TObjectType> 

回答

5

這意味着,這裏的TObjectType必須從CSList<TObjectType>繼承。

通常情況下,您可以使用此構造來獲得基類上的類型化方法和屬性,以調整您打算使用的實際派生類。

要聲明這樣的派生類:

public class SomeDerivedClass : CSList<SomeDerivedClass> 

實施例:

public class Base<T> 
{ 
    public T[] Values { get; set; } 
} 

public TestCollection : Base<TestCollection> 
{ 
    // here, Values inherited from Base will be: 
    // public TestCollection[] Values { get; set; } 
} 

public OtherCollection : Base<OtherCollection> 
{ 
    // here, Values inherited from Base will be: 
    // public OtherCollection[] Values { get; set; } 
} 
相關問題