我有两个数组,在我的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。
答案 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);