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

标签 c# .net generics types type-parameter

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

我遇到了这段代码:

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

public class UserId: Value<UserId>
{
}

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

最佳答案

它被称为“Curiously recurring template pattern”。 C# 示例 herehere .通常用于 fluent syntax接口(interface)类型,以保持通用类型对基本实现“已知”。

关于c# - C# 中的递归泛型类型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58292221/

相关文章:

c# - Azure函数: Is there optimal way to upload file without storing it in process memory?

.net - 在 WPF 中设置控件内容比将类绑定(bind)到选择器控件更好的方法是什么?

C# - 使用泛型的反射 : Problem with Nested collections of ILists

java - 为什么没有办法让接口(interface)要求实现类来引用它们自己的类型?

.net - .NET 中的类数?

java - 理解类<?>

c# - CaSTLe 组件处理顺序

c# - 命名空间中不存在类型或命名空间名称 'Linq'

c# - 在 Blazor wasm 中自动将访问 token 附加到 HTTP 客户端

c# - MVC - 单元测试错误的东西?