Выполнить void в get/set

155
29 ноября 2018, 07:00

Посоветуйте как без создания дополнительных переменных реализовать такое:

public int Rekt {
    get;
    set {
        Logger.Log("new Value " + value);
    }
}

Повторюсь, без добавления новых полей

Answer 1

Автосвойства в C# не подразумевают дополнительных операций при get и set, поэтому при их необходимости придется переходить к обычным свойствам.

private int rekt;
public int Rekt {
    get => rekt;
    set {
        Logger.Log("new Value " + value);
        rekt = value;
    }
}

Кроме этого можно воспользоваться какими-нибудь AOP решениями типа PostSharp.

Answer 2

Нет, того, что вы хотите, в языке нету.

На текущий момент (C# 7.3) вы можете создать либо либо полностью автоматическое свойство, в котором несущее поле создаётся автоматически и вам недоступно, либо полностью неавтоматическое свойство, в котором несущее поле вам приходится декларировать самостоятельно.

В репозитории, посвящённом разработке и развитию языка C#, есть несколько обсуждений, в которых предлагается функциональность, близкая к тому, что нужно вам. Например, вот одно из них: Semi-Auto-Properties; field keyword.

READ ALSO
Не видит функцию С# Unity

Не видит функцию С# Unity

Я создал скрипт C# в котором есть несколько функций и функция ChooseResolution()Прицепил его на пустой объект UIManager, который засунул в поле для объектов...

164
Как подключится к серверу WoW? [C#] [закрыт]

Как подключится к серверу WoW? [C#] [закрыт]

Вообщем интересует ответ на вопрос , который уже озвучен в заголовке тредаВозможно есть уже готовая реализация или же если подскажите в какую...

150
Анимация в Unity (прошу критики кода и метода)

Анимация в Unity (прошу критики кода и метода)

есть анимация ходьбы персонажа (Влево, Вправо, Вверх и Вниз) вызываемая при помощи индексов

156
Отправка сообщений Laravel

Отправка сообщений Laravel

У меня проблема, разрабатываю сайт и нужно сделать отправку сообщений на почту админуТолько проблема в том, пользователь должен иметь сам...

139