如本文所示,可以在C#中定义:
public class MyTreeNode<T> where T: MyTreeNode<T>
{
}
然而,在Delphi中,以下代码不编译,并抱怨"E2003未声明的标识符:'MyTreeNode<>'":
type
TMyTreeNode<T: TMyTreeNode<T>> = class
end;
形式术语似乎是"自引用泛型约束"。我想知道如何在Delphi中做到这一点?
PS:
大卫指出的另一篇有用的文章。
发布关于德尔菲和协方差/方差的SO帖子。
合作/反对差异的维基百科页面。
在Delphi中没有办法表达这样的通用约束。此外,我相信没有一种类型安全的方法可以在C#中实现这样的约束。