Доступ к атрибутам объекта, когда объект находится в массиве C # - PullRequest
0 голосов
/ 29 января 2019

Я использую C # в Visual Studio, как часть формы Windows, но здесь ничего не говорится о форме.

Итак, у меня есть класс с именем 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 - однако то, что я в настоящее время получил, - это не 't работает.

Я ожидаю, что он присвоит значение 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 - это общий объект, имеющий атрибут массива объектов узлов.

Примечание. Это грубая попытка создать собственный класс двоичного дерева, и нет, я не могу просто использовать встроенныйв одном.

1 Ответ

0 голосов
/ 29 января 2019

getValue - это метод.Чтобы вызвать метод, используйте пустой () он же оператор вызова функции

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

Или вы можете использовать свойства только с геттером для достижения аналогичных результатов

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...