这段代码有什么用?

RCI*_*CIX 11 .net c# oop interface

我无法弄清楚这段代码的用途.这种模式有什么用?

[代码在这里为后代重复]

public class Turtle<T> where T : Turtle<T>
{
}
Run Code Online (Sandbox Code Playgroud)

dah*_*byk 9

此模式实质上允许您引用父类中的具体子类.例如:

public abstract class Turtle<T> where T : Turtle<T>
{
    public abstract T Procreate();
}

public class SeaTurtle : Turtle<SeaTurtle>
{
    public override SeaTurtle Procreate()
    {
        // ...
    }
}
Run Code Online (Sandbox Code Playgroud)

与:

public abstract class Turtle
{
    public abstract Turtle Procreate();
}

public class SnappingTurtle : Turtle
{
    public override Turtle Procreate()
    {
        // ...
    }
}
Run Code Online (Sandbox Code Playgroud)

在前者,它指定一个SeaTurtle婴儿将是一个SeaTurtle.