Как изменить значение экземпляра класса или структуры изнутри самого класса или структуры?

У меня есть структура, в которой есть поле Mod, высчитываемое при инициализации:

public struct Characteristic
{
    public CharacteristicType Type;
    public int BaseScore;
    public double Mod;
    public int RacialBonus;
    public int OtherModifier;
    public bool SavingThrow;

    public Characteristic(CharacteristicType type, int score, int rBonus, int oModifier, bool saving)
    {
        Type = type;
        BaseScore = score;
        RacialBonus = rBonus;
        OtherModifier = oModifier;
        SavingThrow = saving;
        if (BaseScore + RacialBonus + OtherModifier > 10)
        {
            Mod = Math.Floor((double) (BaseScore + RacialBonus + OtherModifier - 10) / (double) 2);

        }
        else
            Mod = Math.Round((double) (BaseScore + RacialBonus + OtherModifier - 10) / (double) 2,
                MidpointRounding.AwayFromZero);

    }
}

И я хочу написать метод Up(), повышающий BaseScore на 1 с повторной инициализацией объекта, чтобы я мог написать, к примеру просто char.Up() и поле Mod изменилось согласно новому значению, но способ с this = new не работает:

    public void Up()
    {
        this = new Characteristic(Type, BaseScore + 1, RacialBonus, OtherModifier, SavingThrow);
    }

Однако работает следующий способ:

    public Characteristic Up()
    {
        return new Characteristic(Type, BaseScore + 1, RacialBonus, OtherModifier, SavingThrow);
    }

Но это не то, что мне надо, так как для изменения экземпляра мне придётся использовать переприсваивание char = char.Up(), а не просто char.Up(), как я хочу. Соответственно вопрос в том, как я могу реализовать свою задумку с переинициализацией экземпляра изнутри класса или структуры?


Ответы (0 шт):