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)
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)