作为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; }
}
在程序的其余部分,一个数组包含一系列这些节点,每个节点的值分别为NodeLeft
和NodeRight
。但是,直到达到某个点之前,无法分配NodeLeft
和NodeRight
,因为没有要分配给它们的内容。因此,在满足条件后,将运行while循环,其中每个循环都会导致原始节点对象集被重新分配为具有NodeLeft
和NodeRight
值-但是,我已经当前无法使用。
我期望它为数组中找到的相关值分配值NodeLeft
和NodeRight
。但是,它给了我以下错误:
无法从“方法组”转换为“ int”
我当前正在使用此
newtree[arrayincreasecounter] = new node(newtree[arrayincreasecounter].getValue, newtree[arrayincreasecounter + arrayincreasecounterup].getValue, newtree[arrayincreasecounter + arrayincreasecounterup + 1].getValue);
我(很糟糕)试图做的是获取数组中每个节点对象的值,并将其分配给NodeLeft
和NodeRight
。
arrayincreasecounter
只是一个从0开始的循环变量。
arrayincreasecounterup
是我用来创建特定序列的变量。
newtree
是具有节点对象数组属性的整体对象。
注意:这是制作我自己的二叉树类的粗略尝试,不,我不能只使用内置的类。
答案 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);