可能会在同一个数组中将值从一个索引移动到另一个索引吗?

时间:2013-02-09 19:53:06

标签: c#

这是为了学校作业。

我和我的小组合作伙伴想知道是否可以将值移动到另一个索引 在同一个数组内?

5 个答案:

答案 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