【发布时间】:2018-09-18 15:19:58
【问题描述】:
我正在为使用 C# 中的 Windows 窗体的软件编写一个小插件。
我需要解析一个 XML 文件来检索一些对象并将它们添加到 ListBox 中。问题是在我的程序结束时,所有对象都与最后添加的对象相同。
我有点想通为什么,但我仍在寻找如何解决它。这是一个用String[] 代替我的对象的小例子:
static void Main(string[] args)
{
ListBox listbox = new ListBox();
String[] s = new string[] { "5", "2", "3" };
listbox.Items.Add(s);
s[2] = "0";
listbox.Items.Add(s);
Console.WriteLine(((String[])listbox.Items[0])[2]); // result => 0
Console.WriteLine(((String[])listbox.Items[1])[2]); // result => 0
Console.ReadLine();
}
【问题讨论】:
-
那是因为你添加了同一个数组引用,所以当你更新数组时,你添加到列表框的引用指向同一个改变的数组。如果你想避免这种情况,你需要创建一个新数组。
-
感谢大家的建议!我会试一试。 :)