0

我有一个程序,我试图通过列表框将项目从一个数组列表移动到另一个,但是当我尝试将它添加到第二个数组列表时,它没有添加到那里。

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";
        }

在这里,我尝试将其添加到第二个数组列表中,但 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 回答