当对象位于数组C#

时间:2019-01-28 21:57:35

标签: c# oop

作为Windows窗体的一部分,我正在Visual Studio上使用C#,但此处未提及与该窗体无关的内容。

所以,我有一个叫做node的类:

class node
{
    public int value;
    public int NodeLeft;
    public int NodeRight;

    public node(int value, int NodeLeft, int NodeRight)
    {
        this.value = value;
        this.NodeLeft = NodeLeft;
        this.NodeRight = NodeRight;
    }

    public int getValue() { return value; }
    public int getNodeLeft() { return NodeLeft; }
    public int getNodeRight() { return NodeRight; }


}

在程序的其余部分,一个数组包含一系列这些节点,每个节点的值分别为NodeLeftNodeRight。但是,直到达到某个点之前,无法分配NodeLeftNodeRight,因为没有要分配给它们的内容。因此,在满足条件后,将运行while循环,其中每个循环都会导致原始节点对象集被重新分配为具有NodeLeftNodeRight值-但是,我已经当前无法使用。

我期望它为数组中找到的相关值分配值NodeLeftNodeRight。但是,它给了我以下错误:

  

无法从“方法组”转换为“ int”

我当前正在使用此

newtree[arrayincreasecounter] = new node(newtree[arrayincreasecounter].getValue, newtree[arrayincreasecounter + arrayincreasecounterup].getValue, newtree[arrayincreasecounter + arrayincreasecounterup + 1].getValue);

我(很糟糕)试图做的是获取数组中每个节点对象的值,并将其分配给NodeLeftNodeRight

arrayincreasecounter只是一个从0开始的循环变量。 arrayincreasecounterup是我用来创建特定序列的变量。 newtree是具有节点对象数组属性的整体对象。

注意:这是制作我自己的二叉树类的粗略尝试,不,我不能只使用内置的类。

1 个答案:

答案 0 :(得分:1)

getValue是一种方法。要调用该方法,请使用空的() aka函数调用运算符

newtree[arrayincreasecounter] = new node(
    newtree[arrayincreasecounter].getValue(), 
    newtree[arrayincreasecounter + arrayincreasecounterup].getValue(), 
    newtree[arrayincreasecounter + arrayincreasecounterup + 1].getValue());

或者您可以仅将属性与getter一起使用以实现相似的结果

class node
{
    public int value { get; }
    public int NodeLeft { get; }
    public int NodeRight { get; }

    public node(int value, int NodeLeft, int NodeRight)
    {
        this.value = value;
        this.NodeLeft = NodeLeft;
        this.NodeRight = NodeRight;
    }
}

用法:

newtree[arrayincreasecounter] = new node(
    newtree[arrayincreasecounter].value, 
    newtree[arrayincreasecounter + arrayincreasecounterup].value, 
    newtree[arrayincreasecounter + arrayincreasecounterup + 1].value);