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