以下のコードでは、カスタムオブジェクトのリストを返すベースクラスのプロパティがあります。親クラスではこのプロパティをオーバーライドし、オーバーライドの定義では、基本クラスのカスタムオブジェクトのリストへの参照にアクセスし、2つのオブジェクトを追加します。ベースプロパティのオーバーライドとベースでの参照へのアクセス
戻る前にコードにブレークポイントを置き、ベースプロパティの内容をチェックして、2つの新しいオブジェクトがそこにないことに気付きます。次に、基本クラスのオブジェクトのリストへの参照をローカルに格納しようとし、リストに2つのオブジェクトを再度追加しました。私はローカルリファレンスで2つの新しいオブジェクトが追加されていることに気付きました。
しかし、私は同じ参照を指しているので、私はbase.TestPropertyを参照してオブジェクトを追加できるはずです。それがうまくいかない理由は何ですか?
public override List<CustomObject> TestProperty
{
get
{
List<CustomObject> temp = base.TestProperty;
CustomObject obj1 = new CustomObject()
{
Name = "My Name"
};
CustomObject obj2 = new CustomObject()
{
Name = "Your Name"
};
// Adding to the base list
base.TestProperty.Add(obj1);
base.TestProperty.Add(obj2);
// Adding to temp list, which still points to the base list
temp.Add(obj1);
temp.Add(obj2);
// Base object doesnot contain obj1 and obj2, but the temp object does.
return base.TestProperty;
}
}
実装base.TestPropertyは '新しいリストを()'を返すようにplsは –
Will
が鳴ります。 –
説明した問題を再現するのに十分なコードが提供されていません。 – Servy