代码之家  ›  专栏  ›  技术社区  ›  ashwnacharya

C#语法帮助:class Value<T>在哪里T:Value<T>是什么意思?

  •  -2
  • ashwnacharya  · 技术社区  · 6 年前

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

    我遇到了以下代码:

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

    我被这一部分弄糊涂了 Value<T> 在where子句的两侧使用。有人能解释一下代码的作用吗?

    0 回复  |  直到 6 年前
        1
  •  5
  •   Jesse C. Slicer    6 年前

    它被称为“a” Curiously recurring template pattern “.C#示例 here here .常用于 fluent syntax 接口类型,以保持基本实现“已知”泛型类型。

        2
  •  2
  •   user12031933 user12031933    6 年前

    这意味着T必须是T的值。

    这是正常的发现,难以理解,我发现很难解释。。。很抱歉

    其他人应该能更好地解释。

    Recursive Generics

    Recursive Generics Restrictions