这是为了学校作业。
我和我的团队合作伙伴想知道是否可以将一个值移动到同一个数组中的另一个索引?
当然。
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
如果您的值对象可以为空,则替换为该值。
复制很简单
array[Index+1] = array[Index]
交换是
var tmp = array[Index + 1];
array[Index+1] = arry[Index];
array[Index] = tmp;
移动得好取决于你想用什么来替换移动的项目,以表明它现在是空的,比如
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