0

これが私のサンプルコードです:

private void button1_Click(object sender, EventArgs e)
    {
        listBox1.Items.Clear();
        foreach (var i in numbers())
        {
            listBox1.Items.Add(i);
        }
    }

    private List<int> numbers()
    {
        List<int> counts = new List<int>();
        for (int i = 1; i <= 5; i++)
        {
            counts.Add(i);
        }
        return counts;
    }

を上書きせずに、からの以前の値を残すことが可能かどうかを知りたいですList<>。私のサンプルでは、​​ボタンをクリックするとリストボックスに1,2,3,4,5が入力され、ボタンをもう一度クリックすると、1,2,3,4,5,1,2、の出力が期待されます。 3,4,5この値は、私が自分に期待しているものList<>です。どうすればそれができるでしょうか。ところで、リストボックスは表示目的のためだけにあります。ありがとう!

4

4 に答える 4

3

したがって、削除する必要がlistBox1.Items.Clear();あります。

それとは別に、Enumerable.Concatアイテムを追加するために使用できます。

var num1 = numbers();
var num2 = numbers();
foreach(var num in num1.Concat(num2))
{
    //  ...
}

またはEnumerable.Range、常に同じ5つのアイテムを追加したい場合は、最初から使用します。

int currentCount = listBox1.Items.Count;
int groupSize = 5;
var allItems = Enumerable.Range(0, currentCount + groupSize)
                         .Select(i => 1 + i % groupSize);
foreach(var item in allItems)
{
    // ...
}
于 2012-11-25T23:11:59.017 に答える
1

Clearリスト内のすべてのアイテムを削除します。新しいリストのすべてのアイテムを古いリストに追加するだけの場合は、次を使用しますAddRange

 listBox1.Items.AddRange(numbers());
于 2012-11-25T23:11:34.973 に答える
1

クラスレベルで、numbers()メソッドの外部でカウントを宣言します。このメソッドを呼び出すたびに、リストに1,2,3,4,5が追加されます。

private List<int> _counts = new List<int>();

private void button1_Click(object sender, EventArgs e)
{
    listBox1.Items.Clear();
    foreach (var i in numbers())
    {
        listBox1.Items.Add(i);
    }
}

private List<int> numbers()
{
    for (int i = 1; i <= 5; i++)
    {
        _counts.Add(i);
    }
    return counts;
}
于 2012-11-25T23:15:12.227 に答える
1

を使用List<int> counts = new List<int>();して、新しい空のリストを作成します。これは、を呼び出すたびに新たに発生しnumbers()ます。

私があなたの質問を正しく理解しているなら、あなたnumbers()は既存のリストに5つの番号を追加したいので、それは。を呼び出すたびに大きくなりますnumbers()

これを実現するために、結果値として返すList<int>呼び出しごとに新しいものを作成しないでください。numbers()代わりに、そのリストのプライベートフィールドを作成し、:を呼び出すたびに変更しますnumbers()

private List<int> counts = new List<int>();

private List<int> numbers()
{
    for (int i = 1; i <= 5; i++)
    {
        counts.Add(i);
    }
    return counts;
}

それでもリストが返されることに注意してください。ただしnumbers()、これは新しいリストではありません。毎回同じリストインスタンスです。

于 2012-11-25T23:15:45.033 に答える