たとえば、クラスがあります:
class M
{
public int val;
また、その+
中の演算子:
public static M operator +(M a, M b)
{
M c = new M();
c.val = a.val + b.val;
return c;
}
}
そして、私はList
クラスのオブジェクトを持っています:
List<M> ms = new List();
M obj = new M();
obj.val = 5;
ms.Add(obj);
他のオブジェクト:
M addie = new M();
addie.val = 3;
私がすることができます:
ms[0] += addie;
確かに期待どおりに機能します-リストの値が変更されます。でもやりたいなら
M fromList = ms[0];
fromList += addie;
ms
明らかな理由により、値は変更されません。
しかし直感的にはms[0]
、その後も変化すると予想しています。実際には、リストからオブジェクトを選択してから、他のオブジェクトでその値を増やします。なので、加算前に参考にしたms[0]
ので、実行後fromList
もそのままにしておきたいと思いfromList
ます。
それを達成する方法はありますか?