Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将数组中的项目向后发送,并将其他项目向前移动?C#_C#_Arrays_Int - Fatal编程技术网

如何将数组中的项目向后发送,并将其他项目向前移动?C#

如何将数组中的项目向后发送,并将其他项目向前移动?C#,c#,arrays,int,C#,Arrays,Int,如何在不转换为列表的情况下,将特定索引移到后面,将其他索引移到前面 例如,如果您有数组xs:20、30、40、50、60。 您希望xs更改为: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:20、30、40、50、60。 您希望xs更改为: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;
    }     
 }
if(indx>=0&&indx
交换时,需要使用正确的位置:

for (int i = indx; i < xs.Length-1; i++)
{
    int tmp = xs[i];                    
    xs[i]   = xs[i+1];
    xs[i+1] = tmp;
}
for(int i=indx;i
我想这就是你要问的。创建此方法:

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 }

您可以向我们展示一些您尝试过的代码吗?这是一个带有数组约束的家庭作业,还是我们可以提出合理的建议?您可以简单地使用
RemoveAt
Insert
方法。这不是家庭作业,所以请注释掉。不需要对每个数组元素进行交换。在循环之前保存
xs[indx]
值就足够了,在循环中向下洗牌所有后续值,然后将保存的值存储在数组的末尾。@HABO-是的,有一点改进。这篇文章最初把这两个版本混在一起了。这是一个简单的版本,不是最快的。不过速度足够快。