Скажем, у меня есть класс:Как сделать оператор + = сохранить ссылку на объект?
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
после выполнения его.
Есть ли способы достичь этого?
не должен из списка просто быть какой-то ссылкой здесь? Я не знаю достаточно C#, хотя, чтобы рассказать вам, как это сделать. – falstro
'ms [0] = ms [0] + = addie;' это то, что я считаю нормальным кодом – Will