假设我有一个变量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/