如此article所示,可以在C#中定义:
public class MyTreeNode<T> where T: MyTreeNode<T>
{
}
但是,在Delphi中,以下代码无法编译和抱怨&#34; E2003未声明的标识符:&#39; MyTreeNode&lt;&gt;&#39;&#34;:
type
TMyTreeNode<T: TMyTreeNode<T>> = class
end;
正式术语似乎是"self-referencing generics constraint"。我想知道如何在Delphi中做到这一点?
PS:
Another useful article as David pointed out。
Relevent SO post regarding Delphi and covariance / contravariance。
答案 0 :(得分:2)
Delphi无法表达这样的通用约束。此外,我认为没有类型安全的方法来实现具有这种约束的C#可以实现的目标。