Можно ли назначить новый объект в «это»? - PullRequest
0 голосов
/ 14 мая 2019

У меня есть некоторые вычисления, сделанные в конструкторе класса и теперь давайте предположим, что я хочу изменить одно из переменных полей в этом классе, что повлияет на вычисления, которые были сделаны ранее.

За каждый раз я буду вызывать любой set метод Мне нужно будет снова запустить расчет (или дважды скопируйте код (что является плохим кодированием ..))

Я думаю, что код выглядел бы лучше, если бы я мог сделать так, как показано ниже, Я просто хочу знать, по какой причине это не может быть сделано?

class Entity
{
    private int x,y,z;
    public Entity(int x,int y,int z)
    {
      Calculating();
    }
    private void Calculating()
    {
      // ... 
    }
    public void Set_X(int x)
    {
      this = new Entity(x,this.y,this.z)
    }
}

1 Ответ

4 голосов
/ 14 мая 2019

Вы не можете назначить новый объект this. Это всегда ссылается на текущий объект.

Почему бы вам просто не установить X и вызвать метод Calculting() из Set_X? Это изменит текущее состояние объекта.

Если вы не хотите менять текущий объект, например, из-за других ссылок на него вам придется создать новый экземпляр и вернуть его из Set_X.

...