Это для школьного задания.Перемещение значений из одного индекса в другой в пределах одного и того же массива, возможно?
Я и мой групповой партнер задаются вопросом, можно ли переместить значение в другой индекс в пределах того же массива?
Это для школьного задания.Перемещение значений из одного индекса в другой в пределах одного и того же массива, возможно?
Я и мой групповой партнер задаются вопросом, можно ли переместить значение в другой индекс в пределах того же массива?
Несомненно.
var temp = array[i];
array[i] = array[j];
array[j] = temp;
Ну, это поменялось бы, но вопрос настолько расплывчатый, что мне кажется, что удаление и вставка будут лучше ... –
Массивы обычно считаются фиксированными. Поэтому мне кажется, что замена меня как можно ближе к перемещающимся элементам в массиве. –
Конечно, вы можете;
var array= new int[]{1, 2, 3};
foreach (var i in array)
{
Console.WriteLine (i);
}
array[1] = array[2];
foreach (var j in array)
{
Console.WriteLine (j);
}
Результаты будут;
1 2 3
1 3 3
Адрес DEMO
.
Но, конечно, это будет преодолевать значение от одного значения до другого. Старое значение индекса переносится на новое значение индекса. Если вы хотите использовать изменения своих значений, вы можете использовать значение temp
, например Daniel's answer.
Перемещение значения на C# очень отличается от перемещения, скажем, оранжевого цвета от вашего холодильника до вашего стола, в том смысле, что при перемещении апельсина из одного места в другое старое место больше не содержит оранжевого цвета.
Перемещение элемента в массиве, с другой стороны, это, по сути, акт копирования *, так что вы можете написать что-то вроде этого:
myArray[newIndex] = myArray[oldIndex];
Теперь деталь от старого индекса переносится в новый индекс. Старый индекс также содержит этот элемент. Если вы не хотите, чтобы это произошло, вам нужно явно «удалить» элемент, заменив его чем-то другим. В массиве эталонных объектов, заменить его null
:
myArray[oldIndex] = null;
В массиве объектов значений, необходимо заменить его каким-то особым значением, которое вы назначите, как «ничто», или с null
, если ваш объект значение обнуляемым ,
+1 только для ваших усилий и красивого анализа. –
Копирование просто
array[Index+1] = array[Index]
Своп
var tmp = array[Index + 1];
array[Index+1] = arry[Index];
array[Index] = tmp;
Move также зависит от того, что вы хотите заменить перенесенный элемент с, чтобы указать, что теперь пусто, что-то вроде
array[Index+1] = array[Index];
array[Index] = -1;
Подумайте о массиве в виде лотков для укладчика.вещи могут быть в них, и вы можете перемещать вещи вокруг, но помещение вещей в один ящик или другое не повлияет на порядок чего-либо еще.
Вместо того чтобы использовать массив, вы можете использовать список
List<int> myList = new List<int>();
myList.Add(1);
myList.Add(2);
myList.Add(3);
myList.Add(4);
myList.Add(5);
даст вам 1,2,3,4,5.
затем вызывая
int temp = myList[1];
myList.RemoveAt(1);
myList.Insert(3, temp);
даст вам 1,3,4,2,5
Пробовали ли вы что-нибудь? – bas