这是我的类,名为“Objek”。更改对象列表中的一个元素属性值也会更改所有元素的值
public class Objek
{
public int id;
public int tipe;
public int bentuk;
public List<int> x { get; set; }
public List<int> y { get; set; }
public int xC { get; set; }
public int yC { get; set; }
public Color Warna { get; set; }
public Objek()
{
this.Warna = Color.Black;
this.x = new List<int>();
this.y = new List<int>();
}
public Objek(int tipe, int bentuk)
{
this.tipe = tipe;
this.bentuk = bentuk;
this.Warna = Color.Black;
this.x = new List<int>();
this.y = new List<int>();
}
}
然后在Form1.cs的我声明这个全局(任何方法外):
Objek temp = new Objek();
后I输入 “温度” 的值,我它存储到列表:
List<Objek> Objek = new List<Objek>();
与Objek.Add(temp);
问题是每当我改变元素的属性值(例如:Objek[0].Warna = Color.Red
)中的一个存储多于1“TEMP”对象之后,所有Objek[0, 1, ..., n].Warna
也改变为红色。
有人可以解释我在这些代码中哪里是我的错?
你存储在你的列表中Objek'的'同一实例的多个引用,没有创造Objeck'的'多个实例,他们每个人存储在列表中。 –
你可以在这里添加'form1.cs'的相关代码吗?特别是当你增加价值的部分,因为现在我们只能推测你的问题的原因。它看起来很可能是你添加相同的对象,而不是一个不同的... – Fabjan