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

У меня есть двумерный список, который выглядит примерно так:

public List<List<Tile>> a = new List<List<Tile>>();

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

Tile auxFirst = a[movedTile1.y][movedTile1.x];
a[movedTile1.y][movedTile1.x] = a[movedTile2.y][movedTile2.x];
a[movedTile2.y][movedTile2.x] = auxFirst;

В основном я использую C ++, поэтому не думаю, что полностью понимаю, как работают ссылки в C #. Я пытался рассматривать эту проблему как замену двух указателей, но я могу ошибаться. Можно ли как-то поменять местами 2 списка? Если я подхожу к этому неправильно, пожалуйста, сообщите мне и помогите мне изменить мой код.

1 Ответ

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

Оказалось, что перестановка была правильной, но я забыл поменять местами координаты внутри ссылочных плиток, поэтому, когда я щелкнул одну из переставленных плиток, она выбрала другую. Кроме того, функция, которую я написал для проверки тайлов, была неполной, поэтому я исправил ее. Вот биты, которые я добавил перед заменой элементов в списке:

coordinates auxPos = movedTile1;
a[movedTile1.y][movedTile1.x].setPosition(movedTile2.x, movedTile2.y);
a[movedTile2.y][movedTile2.x].setPosition(auxPos.x, auxPos.y);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...