如何将数组中的一个项目发送到后面并向前移动其他项目?c#

本文关键字:项目 其他 移动 数组 一个 | 更新日期: 2023-09-27 18:17:32

如何在不转换为列表的情况下将特定索引移到后面并将其他索引移到前面?

例如,如果您有数组xs: 20,30,40,50,60。然后你想让x变成:20,40,50,60,30

任何想法?

我用过的不工作的代码:

 if (indx >= 0 && indx < xs.Length)
 {
    for (int i = indx; i < xs.Length-1; i++)
    {
        int bb = xs[indx];                    
        xs[i +1] = xs[i];
        xs[xs.Length - 1] = bb;
    }     
 }

如何将数组中的一个项目发送到后面并向前移动其他项目?c#

我想这就是你要问的。创建这个方法:

private static int[] SwapItem(int[] arr, int index)
{
    return arr.Where(i => i != arr[index]).Concat(new[] { arr[index] }).ToArray();
}

然后在代码中这样使用:

int[] original = { 1, 2, 3, 4, 5, 6 };
var newArray = SwapItem(original, 1);

在这个例子中使用索引1的输出将是:

{ 1, 3, 4, 5, 6, 2 }

当您交换时,您需要使用正确的位置:

for (int i = indx; i < xs.Length-1; i++)
{
    int tmp = xs[i];                    
    xs[i]   = xs[i+1];
    xs[i+1] = tmp;
}