1

C#/.NET Windows Forms アプリケーションでChartDirector ( http://www.advsofteng.com/product.html )を使用して、グラフの x 軸入力として使用される 2 つの配列があります。

配列の 1 つは他の配列と長さが一致しないため、短い方の配列がチャート上で無計画に表示されます。両方の配列の長さが等しくなるように、短い配列を入力として取り、残りの値を 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

基本的に、新しい「0」要素が最後に追加され、長さが longArray と等しくなるように shortArray を変更する方法があるかどうかを尋ねています。

4

3 に答える 3

4

Array.Resize< T> Method http://msdn.microsoft.com/en-us/library/bb348051.aspxを使用して配列のサイズを変更できます。

newSize が古い配列の Length より大きい場合、新しい配列が割り当てられ、すべての要素が古い配列から新しい配列にコピーされます。newSize が古い配列の長さよりも小さい場合、新しい配列が割り当てられ、新しい配列がいっぱいになるまで要素が古い配列から新しい配列にコピーされます。古い配列の残りの要素は無視されます。newSize が古い配列の長さと等しい場合、このメソッドは何もしません。 ソース: 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);

新しい要素を 0 ではなく Chart.NoValue にする必要がある場合は、別の解決策を次に示します。

double[] newArray = Enumerable.Repeat(Chart.NoValue, longArray.Length).ToArray();
Array.Copy(shortArray, newArray, shortArray.Length);
于 2013-09-02T10:39:29.253 に答える