C#中的递归泛型类型参数

ash*_*rya 2 .net c# generics types type-parameter

我需要一些帮助来理解C#中的递归泛型。

我碰到了这段代码:

public abstract class Value<T> where T : Value<T>
{
    ....
}

public class UserId: Value<UserId>
{
}
Run Code Online (Sandbox Code Playgroud)

我Value<T>对where子句两边使用where的部分感到困惑。有人可以解释一下代码的作用吗?

Jes*_*cer 5

它被称为“ 好奇地重复的模板模式 ”。这里和这里的 C#示例。通常用于接口类型的流利语法,以使通用类型对基本实现“已知”。