在阵列C#简单解决方案之间调整对象序列

时间:2015-07-24 20:57:15

标签: c# arrays object sequences

我试图找到(使用下面列出的代码)一个简单的解决方案,用于将存储在第一个数组中的所有对象复制到第二个数组,同时更改第二个数组中对象的索引+ 1,因此该对象第一个数组中的[0]等于第二个数组中的对象[1],第一个数据中的最后一个对象[9]等于第二个中的对象[0]。

在尝试启动我编写的代码时,我收到了消息,其中声明“目标数组不够长检查destIndex和长度,以及数组的下限”,我只是从数组部分开始c#,所以我非常感谢任何指导。

    static void Main(string[] args)
    {
        int[] first = {10, 11, 12, 13, 14, 15, 16, 17, 18, 19};
        int[] second = new int[first.Length];

        Array.Copy(first, 0, second, 1, 10);
        foreach (int x in second)
        { 
            Console.WriteLine("{0}", x);
        }
        Console.ReadKey();
    }
}

2 个答案:

答案 0 :(得分:0)

您可以执行此操作,而不是Array.Copyforeach

for (int i = 0; i < first.Length; i++)
    second[i == first.Length - 1 ? 0 : i + 1] = first[i];

它只是从i = 0转到i = first.Length-1,将first中该索引处的元素复制到second中的该索引加1。

答案 1 :(得分:-1)

如果想要将阵列向前旋转一个位置,可以使用简单的:

static void Main(string[] args)
{
    int[] first = {10, 11, 12, 13, 14, 15, 16, 17, 18, 19};
    int[] second = new int[first.Length];

    for (int k = 0; k < first.Length; k++)
        second[(k == (first.Length - 1))? 0: k + 1] = first[k];

    foreach (int x in second)
    { 
        Console.WriteLine("{0}", x);
    }
    Console.ReadKey();
}
相关问题