Итак, у меня есть ссылочный тип, который является оружием:
class Weapon
{
//Some properties that are both value type and reference type
}
И у меня есть еще один класс для хранения массива оружия и запуска события при изменении текущего оружия:
class WeaponManager
{
Weapon[] weapons;
Weapon currentWeapon;
Weapon CurrentWeapon
{
get => currentWeapon;
set
{
Weapon oldWeapon = currentWeapon;
currentWeapon = value;
OnWeaponChanged?.Invoke(oldWeapon, currentWeapon);
}
}
}
Я объявляю переменную oldWeapon и присваиваю ее currentWeapon для хранения данных. Мой вопрос заключается в том, что я считаю, что, поскольку оружие является ссылочным типом, когда я переназначаю текущее оружие, старое оружие также должно измениться. Но по какой-то причине присвоения, которые я делаю для переменной currentWeapon, не влияют на oldWeapon. Есть ли какие-то вещи, о которых я не знаю, или я что-то неправильно понял?
Примечание. Класс оружия является производным от другого класса, в котором есть хотя бы одна строка, но я не уверен, что проблема в этом.