c# - 这个 C# 构造在做什么,为什么? MyClass<TMyClass> : MyClass where

标签 c# generics inheritance

我遇到了以下代码,它们都在一个文件/类中。我省略了细节,它是我感兴趣的构造。为什么同一个类有两个不同的声明,它们有何不同?第二个声明的语法目的是什么?

public abstract class MyClass
{
    ...
}

public abstract class MyClass<TMyClass> : MyClass
    where TMyClass: MyClass<TMyClass>
{
    ...
}

最佳答案

MyClass - 一个名为 MyClass 的抽象类。

MyClass<TMyClass> : MyClass - 一个名为 MyClass<> 的抽象泛型类但是有一个名为 TMyClass 的通用类型.

如果重命名类型,将更容易看到:

public abstract class MyBaseClass
{
    ...
}

public abstract class MyClass<T> : MyBaseClass
    where T: MyClass<T>
{
    ...
}

关于c# - 这个 C# 构造在做什么,为什么? MyClass<TMyClass> : MyClass where,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19298489/

相关文章:

c# - Java 事务 API 和 .NET System.Transactions

c# - <T>在C#中表示什么

java - 需要 OOP 和继承建议

c# - 在 Silverlight 4.0 中子类化 FrameworkElement - 测量通过问题

c# - 如何在 C# 中搜索组合框的所有项目?

java - 泛型和类型安全 : checking dynamic binding of arguments

c# - 将属性从基类向下移动到子类

c++ - 重写采用继承结构的函数

c# - 如何在 MSpec 中的每次测试运行之前运行代码?

java - 为什么我必须转换为通用类型 T,即使我知道它会正确返回?