@Lesh48

Переменная при передаче в функцию меняется. Как сделать, чтобы такого не было?

Переменная при передаче в функцию меняется. Вот код:
void Start()
{
  int[] pos = new int[2];
  pos[0] = 1;
  pos[1] = 2;

  ChangePos(pos);

  Debug.Log(pos[0] + " " + pos[1]); // вывод 3 4

}

void ChangePos(int[] value_to_change)
{
  value_to_change[0] = 3;
  value_to_change[1] = 4;
}

Как сделать, чтобы при передаче значения переменной в функцию и изменении её в функции, её значение не менялось?
  • Вопрос задан
  • 249 просмотров
Решения вопроса 1
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Как то так. А зачем вам нужно было менять?

void ChangePos(int[] value_to_change)
        {
            var nn = new int[value_to_change.Length];
            value_to_change.CopyTo(nn,0);
            nn[0] = 3;
            nn[1] = 4;
        }
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
vabka
@vabka Куратор тега C#
Токсичный шарпист

Как сделать, чтобы при передаче значения переменной в функцию и изменении её в функции, её значение не менялось?

Не менять значение, например )
В вашем случае можно передавать в метод копию оригинального массив или внутри самого ChangePos создать копию массива, как предлагает Владимир Коротенко.
Но если ChangePos не будет менять значения в переданном массиве, то в чём его смысл?

PS: отложите Unity на потом и подучите C#
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы