协调2个不同长度的数组c#

时间:2013-09-02 10:34:18

标签: c# .net arrays

我有两个数组,在我的C#/ .NET Windows窗体应用程序中使用ChartDirector(http://www.advsofteng.com/product.html)在图表上用作x轴输入。

其中一个阵列的长度与另一个阵列的长度不匹配,导致图表上较短阵列的偶然显示。我需要创建一个新的数组,将短的数组作为输入,并在此处将剩余的值填充为0当量(Chart.NoValue),以便两个数组的长度相等。

有没有办法在不将短数组复制到新数组并用0填充剩余值的情况下执行此操作,如下所示:

double[] newArray = new double[longArray.Length];
for (int i = 0; i < shortArray.Length; i++)
{
    newArray[i] = shortArray[i];
}
for (i = shortArray.Length; i < newArray.Length; i++)
{
    newArray[i] = Chart.NoValue; 
}
//Chart director equivalent of 0, in terms of chart visibility

基本上,我问是否有办法只修改shortArray,以便在末尾添加新的“0”元素,使其长度等于longArray。

3 个答案:

答案 0 :(得分:4)

您可以使用 Array.Resize&lt; T&GT;方法 http://msdn.microsoft.com/en-us/library/bb348051.aspx调整数组大小。

如果newSize大于旧数组的长度,则会分配一个新数组,并将所有元素从旧数组复制到新数组。如果newSize小于旧数组的长度,则分配一个新数组,并将元素从旧数组复制到新数组,直到填充新数组为止。旧数组中的其余元素将被忽略。如果newSize等于旧数组的长度,则此方法不执行任何操作。 来源:http://msdn.microsoft.com/en-us/library/bb348051.aspx

答案 1 :(得分:1)

C#中的数组具有固定长度,因此您无法改变现有实例。您必须使用Chart.NoValue创建一个新数组“并填充”。

但是,您可以用等效(和更快)

替换第一个循环
shortArray.CopyTo(newArray, 0);

答案 2 :(得分:1)

double[] newArray = new double[longArray.Length];
Array.Copy(shortArray, newArray, shortArray.Length);

如果新元素必须是Chart.NoValue而不是0,那么这是另一个解决方案:

double[] newArray = Enumerable.Repeat(Chart.NoValue, longArray.Length).ToArray();
Array.Copy(shortArray, newArray, shortArray.Length);