c#bool.change事件

bru*_*rux 6 .net c# boolean

我可以设置一个事件监听器,以便在bool更改时调用一个函数吗?

jde*_*aan 12

你应该在C#中使用属性,然后你可以在setter中添加你想要的任何处理(记录,触发事件......)

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)
    }
}
Run Code Online (Sandbox Code Playgroud)


The*_*der 5

手动,是的,你可以

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

private bool someBool;
public bool SomeBool
{
    get
    {
        return someBool;
    }
    set
    {
        someBool = value;
        if (SomeBoolChanged != null) 
        {
             SomeBoolChanged();
        }
    }   
}
Run Code Online (Sandbox Code Playgroud)

不确定这是否是你想要的.


Jon*_*Jon 5

这里的重要问题是:何时bool 发生变化?

由于bool是值类型,因此无法直接传递对它的引用.因此,谈论任何类似Changed事件bool本身是没有意义的- 如果发生bool变化,它会另一个变更,而bool不会被修改.

如果我们在谈论bool参考类型的字段或属性,则图片会发生变化.在这种情况下,公认的做法是将bool属性公开(公共字段不受欢迎)并使用该INotifyPropertyChanged.PropertyChanged事件来引发"已更改"通知.