关于变量值的变化
本文关键字:变化 变量值 | 更新日期: 2023-09-27 18:10:35
我有一些代码,根据不同的输入值设置一个变量。简化:
if (hipDepthPoint.X < 100)
{
Xvariabel = 1;
}
else
{
Xvariabel = 2;
}
然后我要查找变量Xvariabel
的变化,每当值发生变化时,我就想执行一个操作。我已经研究过事件和属性,但是我不能使它们任何一个工作
尝试使用属性
if (hipDepthPoint.X < 100)
{
Xvariabel = 1;
}
else
{
Xvariabel = 2;
}
public int Xvariabel
{
get { return _xvariabel ; }
set
{
if (_xvariabel != value)
{
_xvariabel = value
//do some action
}
}
}
带有setter的属性就可以了。
你应该这样写:
private int _X
public int X {
get { return _X ; }
set { _X = value; //Your function here }
}
这是一个使用。net的发明和功能的例子。我使用了INotifyPropertyChange,但是您可以使用自己的接口。这是一个非常通用的类型,它会将自己的值更改通知给多个侦听器
public class Test
{
public static void Main(string[] args)
{
ObservableVar<int> five = new ObservableVar<int>(5);
five.PropertyChanged += VarChangedEventHanler;
five.Value = 6;
int six = five;
if (five == six)
{
Console.WriteLine("You can use it almost like regular type!");
}
Console.ReadKey();
}
static void VarChangedEventHanler(object sender,PropertyChangedEventArgs e)
{
Console.WriteLine("{0} has changed",sender.ToString());
}
}
public class ObservableVar<T> : INotifyPropertyChanged
{
private T value;
public ObservableVar(T _value)
{
this.value = _value;
}
public T Value
{
get { return value; }
set
{
if (!this.value.Equals(value)) //null check omitted
{
this.value = value;
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs("Value"));
}
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
public static implicit operator T(ObservableVar<T> observable)
{
return observable.Value;
}
}