最近、プログラムで問題が発生しました。ユーザー定義クラスのリストを使用すると、データが破損します。例:
class myClass {
public int x;
}
myList<myClass> = new List<myClass>();
myClass myObject = new myClass();
myList.Add(myObject);
myList.Remove(myObject);
リストに何かを追加しようとすると、データが破損しています。オブジェクトを削除することも問題を引き起こしていると思いますが、これはそもそもオブジェクトが破損していることが原因である可能性があります。私はあちこちで同様の問題を見てきましたが、誰かが私に何が起こっているのか説明してくれることを望んでいました。リンクは私にいくつかの答えを提供しますが、舞台裏で何が起こっているのかを説明するのに良い仕事をしていません。
編集:私のデータがどのように破損しているかについて、以前はもっと明確にすべきでした。オブジェクトのフィールドの値は、リストに追加されるときに変更されます。私のプログラムでは、値はすべて0または1である必要がありますが、リストに追加すると-1から3に変更されます。
編集2:問題の原因はC#の不慣れでした。C ++のバックグラウンドから来て、オブジェクトは参照ではなく値によって渡されると思いました。カスタムクラスをクラスから構造体に変更すると、問題はすぐに解決しました。@MattWに感謝します!