Итак, у меня есть справочный тип, который является Оружием:
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 для хранения данных. Мой вопрос заключается в том, что я считаю, что, поскольку Weapon является ссылочным типом, при переназначении currentWeapon oldWeapon также должен измениться. Но по какой-то причине назначения, которые я делаю для переменной currentWeapon, не влияют на oldWeapon. Что-то происходит, о чем я не знаю, или я что-то не так понял?
Примечание: класс оружия происходит из другого класса, в котором есть хотя бы одна строка, но я не уверен если это проблема.