Detect variable change c# [duplicate]

馋奶兔 提交于 2019-12-24 17:21:07

问题


I've been searching this for a while and I didn't found anything for my problem.

I have a integer:

private static int kills = 0;

I want a function to run when that variable changes. Like, it is 0 now. If it changes to 2, I want a function like OnVarChange that will be called, and that function OnVarChange will return the amount that was changed. In this case 2-0=2, so it will return 2.

Is this possible? How do I do it?

Hope you understand what I just said :p


回答1:


You need to provide a change mechanism:

Add:

public static int Kills{
    get{  return kills; }
    set{

        kills = value;
        //change code here...
       }
}

Only set using this public Kills property. Don't directly change the instance member kills if possible. But there is always an exception.




回答2:


Make a property, which allows logic inside of it. That would be a good place to add this kind of functionality:

private static int kills = 0;

public static int Kills
{
    get
    {
        return kills;
    }
    set
    {
        this.kills = value;
        this.OnVarChange();
    }
}

A better option would be to implement INotifyPropertyChanged, which is an interface that UI and other parts of the framework can pick up and act on.

public class X : INotifyPropertyChanged
{
    private int kills = 0;

    public int Kills
    {
        get
        {
            return kills;
        }
        set
        {
            this.kills = value;
            this.OnPropertyChanged();
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

    protected void OnPropertyChanged([System.Runtime.CompilerServices.CallerMemberName] string propertyName = "")
    {
        PropertyChangedEventHandler pc = this.PropertyChanged;

        if (pc != null)
        {
            pc(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}



回答3:


static int Kills
{
 get{
return kills;
}
 set{
    OnVarChange(kills,value);
    kills = value;
}
}

Define a property for kills. Use this property to change value of kills. You can use set accessor of this property to call a method to detect change in variable kills.



来源:https://stackoverflow.com/questions/37924612/detect-variable-change-c-sharp

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!