我是 C# 新手,所以请耐心等待。我在 c# 中有一个问题,我无法决定我需要一个类还是一个结构。我正在创建一个类或结构的列表并向其添加元素。如果我使用结构,那么我可以添加一个项目,更改它,然后再次添加它,并且将看到更改,因为它是按值传递的。问题是,结构不是可变的,所以我以后不能编辑任何元素。如果我使用一个类,那么如果我添加一个项目并更改它,列表中的所有项目都会更改。如果我希望它有所不同,我必须每次都创建一个新的对象实例。但是我有一个对象,我只想更改一个项目,所以我必须将所有其他项目复制到新对象?!为什么?有更好的解决方案吗?
这段代码说明了我的问题:
namespace TestError
{
public partial class Form1 : Form
{
private List<Thing> lst;
private Thing obj;
public Form1()
{
InitializeComponent();
lst = new List<Thing>();
obj = new Thing();
obj.a = "bla";
lst.Add(obj);
//obj = new Thing();
obj.a = "thing";
lst.Add(obj);
foreach (Thing t in lst)
listBox1.Items.Add(t.a);
}
}
class Thing
{
public string a;
//problem is there are many more items here that don't change!
}
}
为什么结构不起作用:
namespace TestError
{
public partial class Form1 : Form
{
private List<Thing> lst;
private Thing obj;
public Form1()
{
InitializeComponent();
lst = new List<Thing>();
obj = new Thing();
obj.a = "bla";
lst.Add(obj);
lst[0].a = "new"; //error. if i change it to class, it works.
obj.a = "thing";
lst.Add(obj);
foreach (Thing t in lst)
listBox1.Items.Add(t.a);
}
}
struct Thing
{
public string a;
}
}