0

「シリーズ」と呼ばれる静的グローバル配列を作成しようとしています。ただし、その中の文字列の数は、nummericUpDown カウンターに依存する必要があります。多くのバリエーションを試した結果、多くのエラーバリエーションが発生しました。私のコードは、私が持っているコードの上部近くで、次のようになります。

public partial class Form1 : Form
{
    static string[] series;

それで、配列をグローバルにした後、そのサイズを設定したいと思います。nummericUpDown は上下する可能性があるため、最初に配列を消去します (エラーが発生します) 後で { "M1","M2","M3" ......etc} で埋めたいです このコードをどのように記述すればよいですかそれは動作しますか?

private void numericUpDown1_ValueChanged_1(object sender, EventArgs e)
    {
        if (numericUpDown1.Value < 1) { numericUpDown1.Value = 1; }
        int i;
        series[0] = "x";

        if (series.Length > 0) { Array.Clear(series, 0, series.Length); }
        for (i = 0; i < numericUpDown1.Value; i++) { series[i] = "M" + i.ToString(); }

    }
4

3 に答える 3

0

シリーズ変数を正しいサイズの新しい配列に設定するだけです。そうすることで、以前に配列にあったすべての以前の値がクリアされます。

if (series.Length > 0) { series = new string[numericUpDown1.Value]; }
于 2012-06-29T12:37:41.373 に答える
0

A のList<string>方がはるかに優れたアイデアです。しかし、本当に配列を使用する必要がある場合:

最初に配列を次のように定義することをお勧めします。 static string[] series = new string[0];

次に、アップ/ダウンが変化した場合:

Array.Resize(ref series, newSize);

これにより、既存の配列のサイズを変更できます。ただし、サイズが小さくなるとデータが失われることに注意してください。

于 2012-06-29T12:40:12.360 に答える
0

こんにちは、このように書き直しましたが、うまくいきました。答えてくれてありがとう!

private void numericUpDown1_ValueChanged_1(object sender, EventArgs e)
{       if (numericUpDown1.Value < 1) { numericUpDown1.Value = 1; }
        series = new string[Convert.ToInt16(numericUpDown1.Value)]; 
        int j=series.Length;
        for (int i = 0; i < j; i++) { series[i] = "M" + i.ToString(); }
}
于 2012-06-29T12:56:42.527 に答える