【发布时间】:2012-11-08 07:33:15
【问题描述】:
我才发现
public class Foo<T> where T : Foo<T>
{
}
是合法的。它到底是什么意思?它似乎 递归的,是否可以实例化某些东西 像这样?
【问题讨论】:
-
这些被称为“奇怪地重复出现”的通用约束。另请参阅:Curiouser and curiouser,作者 Eric Lippert,这可能是您能得到的最佳解释。
-
这通常用于获取对实际类的类型引用。示例是 IComparable 等。
-
@AlvinWong,这并非完全没用。您可以通过向 Foo 添加包含您的值的属性来构建像这样的树状结构。同样,Foo 可以被继承,因此这个约束也允许 Foo 的任何派生。