这是为了学校作业。
我和我的小组合作伙伴想知道是否可以将值移动到另一个索引 在同一个数组内?
答案 0 :(得分:4)
不确定
var temp = array[i];
array[i] = array[j];
array[j] = temp;
答案 1 :(得分:1)
当然可以;
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
之类的{{1}}值。
答案 2 :(得分:1)
在C#中移动一个值与从冰箱移动到桌面的橙色非常不同,因为当您将橙色从一个地方移动到另一个地方时,旧地方不再包含橙色。 / p>
另一方面,移动数组中的项目实际上是复制 * 的行为,因此您可以编写如下内容:
myArray[newIndex] = myArray[oldIndex];
现在旧索引中的项目将移动到其新索引。旧索引也包含该项目。如果您不希望发生这种情况,则需要通过将其替换为其他内容来明确“删除”该项目。在参考对象数组中,您将其替换为null
:
myArray[oldIndex] = null;
在一个值对象数组中,用一些你指定为“无”的特殊值替换它,或者如果你的值对象可以为空,则用null
替换它。
<小时/> * 你复制的内容取决于数组元素的类型:在一个值类型数组中,项目本身被复制;在引用类型数组中,引用被复制。继续橙色类比,当橙色是参考类型时,橙色数组是定义数组中所有橙色位置的便利贴的列表。你没有将橙色移动到阵列中,而是将一个便条纸写成“右边的第三个橙色”,然后将橙色留在原位。复制参考对象只需复制其便利贴。
答案 3 :(得分:0)
复制就是
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;
答案 4 :(得分:0)
将数组视为堆栈器托盘。事情可以在其中,你可以移动东西,但把东西放在一个抽屉或另一个不会影响其他任何东西的顺序。
您可以使用列表
,而不是使用数组 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