我有一些代碼,它根據不同的輸入值設置一個變量。這裏簡化:關於變量值的變化。
if (hipDepthPoint.X < 100)
{
Xvariabel = 1;
}
else
{
Xvariabel = 2;
}
然後我想尋找變化的變量Xvariabel
,並且每當價值的變化我想執行的操作。我已經研究過事件和屬性,但是我不能讓它們中的任何一個起作用。
我有一些代碼,它根據不同的輸入值設置一個變量。這裏簡化:關於變量值的變化。
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
}
}
}
屬性與二傳手應該做的工作去做。
你應該寫這樣的事情:
private int _X
public int X {
get { return _X ; }
set { _X = value; //Your function here }
}
這是缺少一個檢查,看它是否實際*更改*。將X設置爲相同的值兩次將在不應該時調用'你的函數'。 – 2013-04-24 11:25:48
下面是一個例子你可以使用一個發明和.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;
}
}
你想檢查它是否改變了?這是唯一可以改變的地方嗎? – 2013-04-24 11:12:06
這是唯一可以改變的地方。最好檢查一個新方法或函數的值的變化。 – cse 2013-04-24 11:16:49