c# - 涉及泛型和自继承的继承混淆

标签 c# .net generics inheritance

我对这个接口(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/

相关文章:

java - 为什么 List<Boolean> 可以在变量中存储其他对象(Mybatis)

c# - ReactiveUI ObservableForProperty 生命周期

.NET 日期到字符串在 Vista 伪文化中给出无效字符串

c# - 远程服务器声明表不存在

c# - 检测连接是否可行

c#,泛型类型的问题

java - 每个声明之间有什么区别,对每个声明有什么影响?

c# - 在 unity3D 中,为什么当触摸次数小于 0 时,Input.GetMouseButton(0) 对触摸设备起作用?

c# - 如何序列化自定义对象类型列表

C# 关于参数和运行程序