我在我正在使用的库中看到过这种定义。我对TObjectType:CSObject的位置感到疯狂。很明显,似乎我可以在约束中使用相同的时间,因为它可以工作和编译,但这究竟意味着什么?
public class CSList<TObjectType>: CSList, IList<TObjectType>, IList
where TObjectType: CSObject<TObjectType>
答案 0 :(得分: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; }
}