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

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

4 ответов


вы должны использовать свойства В 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)
    }
}

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

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

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


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

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

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

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


посмотреть в реализации INotifyPropertyChanged в. MSDN получил большое, как по этому вопросу