0

さまざまな入力値に応じて変数を設定するコードがあります。ここで簡略化:

if (hipDepthPoint.X < 100)
{
    Xvariabel = 1;
}
else 
{
    Xvariabel = 2;
}

次に、 variable の変更を探しXvariabel、値が変更されるたびにアクションを実行したいと考えています。イベントとプロパティを調べましたが、それらを機能させることができませんでした。

4

3 に答える 3

4

プロパティでそれをやってみてください

if (hipDepthPoint.X < 100)
{
    Xvariabel = 1;
}
else 
{
    Xvariabel = 2;
}


public int Xvariabel 
{
    get { return _xvariabel ; }
    set
    {
        if (_xvariabel != value)
        {
            _xvariabel = value
            //do some action
        }
    }
}
于 2013-04-24T11:13:00.717 に答える
1

セッターを持つプロパティが機能するはずです。
あなたはそのようなものを書くべきです:

private int _X     
public int X {
    get { return _X ; }
    set { _X  = value; //Your function here }
}
于 2013-04-24T11:16:14.133 に答える
0

以下は、.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-24T11:47:22.853 に答える