0

リストボックスを介してある配列リストから別の配列リストにアイテムを移動しようとしているプログラムがありますが、2番目の配列リストに追加しようとすると、そこに追加されません。

ArrayList list1 = new ArrayList();
ArrayList list2 = new ArrayList();
list1.Add(new Class(var1, var2, var3, var4, var5, var6, var7));
foreach (object o in list1)
        {
            class m = (class)o;
            selectionBox.Items.Add(m);
        }

上記のすべてを初期化し、すべてをクラスに追加してからリストボックスに追加しました。XML ファイルから取得した変数に注意してください。

 bool req = true;

        if (selectionBox.SelectedItem != null)
        {
            Count++;
            errorLabel.Text = "";

            for (int i = 0; i < selectionBox.Items.Count; i++)
            {
                if (selectionBox.GetSelected(i) == true)
                {

                    class m = selectionBox.SelectedItem as class;
                    if (m.var2 == ((Modules)selectionBox.Items[i]).var2)
                    {
                        list2.Add(list1.IndexOf(i));
                    }
                }
            }

        }
        else
        {
            errorLabel.Text = "Error";
        }

ここで、2 番目の配列リストに追加しようとしていますが、if ステートメントは機能しませんが、print ステートメントでこれを試してみましたが正しいです。それでは、次の行がリストに追加されない理由を誰か教えてもらえますか?

 list2.Add(list1.IndexOf(i));
4

1 に答える 1

1

list2.Add(list1.IndexOf(i));各要素のインデックス (位置) が表示されます。要素そのものではありません。

要素を追加するには、次のようにする必要があります。

list2.Add(list1[i]);

また、余談ですが、これは各要素への参照をコピーするだけで、それぞれの新しいコピーを作成しません。

于 2013-03-25T13:43:31.050 に答える