c# - 是否可以为 bool 值切换时制作类似事件处理程序的东西?

标签 c# variables event-handling toggle

假设我有一个变量doSomethingWhenTrue。现在假设它是false。现在,每次它切换值时,我希望它执行与此类似的函数:

private void someResponseToToggledBool()
{
    If(boolInQuestion)
    {
        //do some stuff
        boolInQuestion = false;
    }
}

有人知道怎么做吗?我的(蹩脚)想法是制作一个计时器,并将这个函数分配给它的刻度值,然后将其扔到另一个线程上......但是必须有比这更直接的方法,正确吗?

最佳答案

您可以使用属性

private bool _boolInQuestion;
public bool BoolInQuestion
{
    get { return _boolInQuestion; }
    set
    {
         _boolInQuestion = value;
         //call method to do something
    }
}

在 setter 中,您还可以引发一个事件,由需要对切换使用react的任何人处理,甚至实现 INotifyPropertyChanged ( https://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged(v=vs.110).aspx )

编辑

根据您的评论,您希望此属性是静态的。您可以通过将字段和属性声明为 static 来实现此目的:

    private static bool _boolInQuestion;
    public static bool BoolInQuestion
    {
        get { return _boolInQuestion; }
        set
        {
            _boolInQuestion = value;
            //call method to do something
        }
    }

但这也要求 setter 中调用的方法也是静态。或者,您可以将该属性保持为非静态并实现 Singleton :

public sealed class BoolHolder
{
    private BoolHolder() { }

    private static BoolHolder instance = null;        
    public static BoolHolder Instance
    {
        get
        {
            if (instance == null)
            {
                instance = new BoolHolder();
            }
            return instance;
        }
    }

    private bool _boolInQuestion;
    public bool BoolInQuestion
    {
        get { return _boolInQuestion; }
        set
        {
            _boolInQuestion = value;
            //call method to do something
        }
    }
}

并将其访问为 BoolHolder.Instance.BoolInQuestion

关于c# - 是否可以为 bool 值切换时制作类似事件处理程序的东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40812467/

相关文章:

c# - 如果网站在服务器上并且 Lync 在本地用户环境中,我如何让 Lync 客户端工作?

c# - 将包含对象作为参数传递给包含对象的方法是不是不好的设计?

c - 没有变量名称?

tsql - SQL Server 变量的微妙之处

php - PHP 命名空间可以包含变量吗?

c# - Entity Framework 多对多关系更新

c# - 使用 C# 编写代码并构建成跨平台二进制文件? (iOS 和 Android)

jquery - 删除子项的事件处理程序

flash - 如何使用新的异步代码跟踪Flash按钮上的事件

swift - 使用选择器时如何处理回调?