从另一个数组列表添加到数组列表

时间:2013-03-25 13:34:09

标签: c# winforms arraylist listbox

我有一个程序,我试图通过列表框将项目从一个arraylist移动​​到另一个arraylist但是当我尝试将它添加到第二个arraylist时它不会添加。

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));

1 个答案:

答案 0 :(得分:1)

list2.Add(list1.IndexOf(i));将为您提供每个元素的索引(位置)。不是元素本身。

要添加元素,您需要执行以下操作:

list2.Add(list1[i]);

另外,就这一点而言,这只会复制对每个元素的引用,它不会创建每个元素的新副本。