检测变量c#

bru*_*o00 1 c# variables detect

我已经搜索了一段时间,但我找不到任何问题.

我有一个整数:

private static int kills = 0;
Run Code Online (Sandbox Code Playgroud)

我想要一个函数在变量变化时运行.就像,它现在是0.如果它变为2,我想要一个像OnVarChange这样的函数将被调用,而该函数OnVarChange将返回已更改的数量.在这种情况下2-0 = 2,所以它将返回2.

这可能吗?我该怎么做?

希望你明白我刚才说的话:p

T M*_*own 6

您需要提供更改机制:

加:

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

        kills = value;
        //change code here...
       }
}
Run Code Online (Sandbox Code Playgroud)

set使用这个公共Kills财产.kills如果可能,请勿直接更改实例成员.但总有一个例外.


Pat*_*man 6

创建一个属性,它允许在其中进行逻辑。那将是添加此类功能的好地方:

private static int kills = 0;

public static int Kills
{
    get
    {
        return kills;
    }
    set
    {
        this.kills = value;
        this.OnVarChange();
    }
}
Run Code Online (Sandbox Code Playgroud)

更好的选择是实现INotifyPropertyChanged,这是一个界面,UI 和框架的其他部分可以选择并采取行动。

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));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)