【问题标题】:c# bool.change eventc# bool.change 事件
【发布时间】:2011-07-23 16:11:23
【问题描述】:

我可以设置一个事件侦听器,以便在布尔值更改时调用函数吗?

【问题讨论】:

    标签: c# .net boolean


    【解决方案1】:

    您应该在 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)
        }
    }
    

    【讨论】:

    • 嗯,我迷路了。你能举个例子让我去吗?
    • 完成 :-) 属性确实擅长很多事情。我会敦促您始终将它们用于公共数据(而不是成员)。这使得更改或添加更容易,您可以在接口中指定它们,而您无法为成员执行...
    【解决方案2】:

    手动,是的,你可以

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

    但不确定这是否是您要查找的内容。

    【讨论】:

      【解决方案3】:

      这里的重要问题是:当bool 什么发生变化?

      由于bool 是一种值类型,因此您不能直接传递对它的引用。因此,在bool 本身上谈论Changed 事件是没有意义的——如果bool 发生变化,它会替换另一个bool,而不是修改。

      如果我们谈论的是引用类型上的bool 字段或属性,情况就会发生变化。在这种情况下,公认的做法是将bool 公开为属性(不赞成公共字段)并公开use the INotifyPropertyChanged.PropertyChanged event 以引发“更改”通知。

      【讨论】:

        【解决方案4】:

        研究实施 INotifyPropertyChanged。 MSDN has got a great How To on the subject

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-12-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-04-02
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多