Можно ли наблюдать булево до изменения? (С #) - PullRequest
0 голосов
/ 29 августа 2018

Итак, у меня есть

boolean variableName = false

Можно ли написать событие (наблюдаемое имя_переменного), которое "наблюдает" имя_переменной все время, пока оно не изменится на истину, а когда оно станет истиной, событие что-то сделает? Как например:

public void observeVariableName() //triggers when variableName == true
{
// do actions here
variableName = false
}

Ответы [ 3 ]

0 голосов
/ 29 августа 2018

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

0 голосов
/ 29 августа 2018

Попробуйте использовать в своем классе interface INotifyPropertyChanged, который содержит ваш логический тип.

Например,

    public class DemoCustomer : INotifyPropertyChanged
    {
        private bool _selected;
        public bool Selected
        {
            get
            {
                return _selected;
            }
            set
            {
                _selected = value;
                NotifyPropertyChanged("Selected");
            }
        }

        public event PropertyChangedEventHandler PropertyChanged;

        // This method is called by the Set accessor of each property.
        // The CallerMemberName attribute that is applied to the optional propertyName
        // parameter causes the property name of the caller to be substituted as an argument.
        private void NotifyPropertyChanged([CallerMemberName] String propertyName = "")
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
        }

Затем вы слушаете это событие.

var d = new DemoCustomer();
d.PropertyChanged += (s,e) => { if(e.PropertyName = "Selected" && ((DemoCustomer)s).Selected) { //do something}};
0 голосов
/ 29 августа 2018

Вы должны использовать свойство variableName.

public bool variableName {
   get {
      return variableName;
   }
   set {
      variableName = value;
      if (value)
          // do stuff;
   }
}

Ищите инструкции .

...