我最近遇到了一个麻烦,在我的程序中,使用用户定义的类的列表一直在破坏数据。例如:使用自定义类的列表
class myClass {
public int x;
}
myList<myClass> = new List<myClass>();
myClass myObject = new myClass();
myList.Add(myObject);
myList.Remove(myObject);
当我尝试向列表添加内容时,我的数据被破坏。我相信删除对象也会导致问题,但这可能是因为它们首先被损坏。我见过类似的问题here和there,并希望有人能向我解释发生了什么事。虽然这些链接确实为我提供了一些答案,但他们并没有很好地解释幕后发生的事情。
编辑:我应该更清楚我的数据如何被损坏。添加到列表中时,我的对象字段中的值将被更改。对于我的程序来说,这些值应该都是0或1,但是当添加到列表时,请将其更改为-1到3.
编辑2:问题的来源与C#不熟悉。我从C++背景出发,假定对象是按值传递的,而不是通过引用传递的。将我的自定义类从类更改为结构立即解决了问题。感谢@MattW!
数据被破坏的方式是什么? –
从链接看起来你试图检查列表中的“Contains”,你没有得到期望的结果?如果是这种情况,请将其添加到您的问题中,“数据损坏”并不是告诉我们您的问题是什么 – Habib
是您的数据损坏或更改? –