我有一个程序,我试图通过列表框将项目从一个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));
答案 0 :(得分:1)
list2.Add(list1.IndexOf(i));
将为您提供每个元素的索引(位置)。不是元素本身。
要添加元素,您需要执行以下操作:
list2.Add(list1[i]);
另外,就这一点而言,这只会复制对每个元素的引用,它不会创建每个元素的新副本。