这个C#构造的作用是什么?为什么?MyClass <TMyClass>:MyClass在哪里

Ste*_*ash 6 c# generics inheritance

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

public abstract class MyClass
{
    ...
}

public abstract class MyClass<TMyClass> : MyClass
    where TMyClass: MyClass<TMyClass>
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

Sam*_*ica 2

public abstract class MyClass<TMyClass> : MyClass
    where TMyClass: MyClass<TMyClass>
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

是一个继承自 的类MyClass,并且它采用泛型类型,该类型必须继承自MyClass<TMyClass>


这是同样的事情的一个更简单的例子

    public static void Main()
    {
        MyClass<Myclass> other = new MyClass<Myclass>(new Myclass());
        List<int> intlist = new List<int>();
    }

    public class Myclass
    {
        public Myclass()
        {
        }
        public int i { get; set; }
    }

    public class MyClass<T> where T : Myclass
    {
        T value;
        public MyClass(T val)
        {
            value = val;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)