我对这个接口(interface)和类定义有点困惑。有人可能会有所启发吗?
接口(interface)和继承自它的类是这样定义的:
public abstract class DNum {
}
public abstract class DNum<DIM> : DNum where DIM : DNum<DIM> { //etc...
...
DIM : DNum<DIM>
有点在扔我。 DIM 必须从我们当前定义的类继承,并将其本身作为泛型参数?这是某种无限递归的定义吗?这里发生了什么?
最佳答案
这种声明的通常意图是对于任何具体的子类,DIM
将是那个子类:
public sealed class Concrete : DNum<Concrete>
{
...
}
通常这是为了让您可以创建相同类型或非常相似的新实例。
(请注意,.NET 命名约定不赞成将
DIM
作为类型参数名称。)
关于c# - 涉及泛型和自继承的继承混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11280216/