前言
值改变事件一般会用在控件上面,如Winform TextBox的TextChanged事件,Html Input text的change事件,能够在输入值改变的时候立刻通知到需要获取的事件里面,可以做出对应的处理。但是假如我们一个变量调用的地方比较多,在某些情况下也需要监控呢?或者说想通过一个最简单的方式实现对变量的赋值保护呢?(是可以在不改变原有代码情况下的一个操作,这样其实可以针对一些屎山代码),当然这里举个例子而已,实际上也可另作他用。
具体怎么实现?其实也很简单,利用属性和事件即可完成。
开发环境:.NET Framework版本:4.8
开发工具:Visual Studio 2022
实现步骤
首先定义一个值改变事件,提供两个参数,分别是旧值和新值
public event Action<string, string> ValueChanged;
定义变量属性,在set操作中进行如下处理
private string _Value;
public string Value
{
get
{
return _Value;
}
set
{
string oldValue = _Value;
_Value = value;
if (oldValue != _Value && ValueChanged != null)
{
ValueChanged(oldValue, value);
}
}
}
在合适的位置进行事件绑定
ValueChanged +=
new Action<string, string>((oldValue, newValue) =>
{
MessageBox.Show("old:" + oldValue + ",new:" + newValue);
});
调用测试
int i = 0;
private void button1_Click(object sender, EventArgs e)
{
Value = i++.ToString();
}
实现效果