У меня есть структура, в которой есть поле 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()
, как я хочу.
Соответственно вопрос в том, как я могу реализовать свою задумку с переинициализацией экземпляра изнутри класса или структуры?
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Следующий код @using (AjaxBeginForm("CheckChanging", new AjaxOptions { UpdateTargetId = "results" })) вызывает ошибку CS0103 Имя "Ajax" не существует в текущем контексте
Реализовать программы клиента и сервера, работающие по протоколу UDPКлиент каждые 10 секунд отправляет на сервер пакет данных
Предположим, у нас есть строка преобразования SVG: