@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;
}

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

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 Куратор тега C#
Токсичный

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

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

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

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

Войти через центр авторизации
Похожие вопросы
ЭЛКОМ+ Москва
от 70 000 до 165 000 ₽
от 3 500 до 4 000 $
deeplay Новосибирск
от 130 000 до 200 000 ₽
28 янв. 2021, в 15:21
10000 руб./за проект
28 янв. 2021, в 15:09
1000 руб./в час
28 янв. 2021, в 14:43
2490 руб./за проект