摘要与继承人作为领域

Ozi*_*iho 5 .net c#

我正在制作一个包含多种二叉树的程序.所以我决定创建一个抽象类,以避免复制代码.但是存在一个问题,每棵树的节点需要包含与节点本身类型相同的子节点.有没有办法在摘要中定义它,或者我应该为每种类型制作不同的类?

public abstract class BinaryNodeAbstract<T>
{
    public T Value;
    public BinaryNodeAbstract<T> Left;
    public BinaryNodeAbstract<T> Right;
Run Code Online (Sandbox Code Playgroud)

现在的方式,节点可以是任何类型的BinaryNode.这是需要避免的.

Pat*_*man 7

您也应该包含父类型,以保持继承的类型LeftRight(否则您不能在实现者上使用继承的类型):

public abstract class BinaryNodeAbstract<T, L> where L : BinaryNodeAbstract<T, L>
{
    public T Value;
    public L Left;
    public L Right;
}
Run Code Online (Sandbox Code Playgroud)

你可以像这样使用它:

public class BinaryNodeImplementation : BinaryNodeAbstract<int, BinaryNodeImplementation>
{
}
Run Code Online (Sandbox Code Playgroud)