3

我在我正在使用的库中看到了这种定义。我对 where TObjectType: CSObject 感到疯狂。很明显,似乎我可以在约束中使用相同的时间,因为它可以工作和编译,但这到底意味着什么?

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

1 回答 1

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; }
}
于 2013-06-03T09:07:45.700 回答