【问题标题】:public abstract class Foo<T> where T : Foo<T>. When/why is this useful to ensure T implements Foo<T>公共抽象类 Foo<T> 其中 T : Foo<T>。何时/为什么这有助于确保 T 实现 Foo<T>
【发布时间】:2020-09-20 08:21:02
【问题描述】:

我正在研究 c# 中的通用约束,但无法理解以下内容:

public abstract class Foo<T> where T : Foo<T>

使用时

public class Bar : Foo<Bar>

我想找一个例子说明为什么要使用它以及解决了什么问题,这样我就可以编写自己的例子来帮助我理解它。不幸的是,除了使用它的代码 sn-ps 之外,我没有找到任何东西,但没有任何解释,我期望这是因为我不了解它从根本上实现/解决了什么,因此我的搜索词没有返回对我有意义的东西。

【问题讨论】:

标签: c# class generics constraints


【解决方案1】:

这被称为奇怪重复的模板模式。你肯定不是第一个被它弄糊涂的人。它使您能够访问有关基类中派生类的信息。本文中有一些很好的用例示例:https://zpbappi.com/curiously-recurring-template-pattern-in-csharp/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-18
    • 1970-01-01
    • 2021-02-18
    • 1970-01-01
    • 2010-11-08
    • 2020-10-03
    • 1970-01-01
    相关资源
    最近更新 更多