событие c # bool.change - PullRequest
       32

событие c # bool.change

6 голосов
/ 27 марта 2011

Можно ли настроить прослушиватель событий так, чтобы при изменении bool вызывалась функция?

Ответы [ 4 ]

11 голосов
/ 27 марта 2011

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

private Boolean _boolValue
public Boolean BoolValue
{
    get { return _boolValue; }
    set
    {
        _boolValue = value;
        // trigger event (you could even compare the new value to
        // the old one and trigger it when the value really changed)
    }
}
5 голосов
/ 27 марта 2011

Важный вопрос здесь: когда bool что изменяется?

Поскольку bool является типом значения, вы не можете передавать ссылки на него напрямую.Поэтому не имеет смысла говорить о чем-либо подобном событию Changed на самом bool - если bool изменяется, то заменяется другим bool, не изменяется.

Изображение меняется, если мы говорим о bool поле или свойстве ссылочного типа.В этом случае общепринятой практикой является выставление bool как свойства (общедоступные поля осуждаются), а использует событие INotifyPropertyChanged.PropertyChanged , чтобы вызвать «измененное» уведомление.

5 голосов
/ 27 марта 2011

Вручную, да, вы можете

public delegate void SomeBoolChangedEvent();
public event SomeBoolChangedEvent SomeBoolChanged;

private bool someBool;
public bool SomeBool
{
    get
    {
        return someBool;
    }
    set
    {
        someBool = value;
        if (SomeBoolChanged != null) 
        {
             SomeBoolChanged();
        }
    }   
}

Не уверен, однако, если это то, что вы ищете.

4 голосов
/ 27 марта 2011

Изучите реализацию INotifyPropertyChanged. MSDN получил отличный How To по теме

...