1

我有两个数组,它们将在我的 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。

4

3 回答 3

4

您可以使用Array.Resize<T> 方法 http://msdn.microsoft.com/en-us/library/bb348051.aspx来调整数组的大小。

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

于 2013-09-02T10:36:40.693 回答
1

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

但是,您可以将第一个循环替换为等效的(并且更快)

shortArray.CopyTo(newArray, 0);
于 2013-09-02T10:36:29.010 回答
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);
于 2013-09-02T10:39:29.253 回答