代码之家  ›  专栏  ›  技术社区  ›  bruxo00

检测变量更改c#[重复]

  •  2
  • bruxo00  · 技术社区  · 9 年前

    我已经搜索了一段时间,没有发现任何问题。

    我有一个整数:

    private static int kills = 0;
    

    我希望在变量发生变化时运行函数。比如,现在是0。如果它变为2,我想要一个像这样的函数 开启VarChange 将被调用,以及该函数 开启VarChange 将返回更改的金额。在这种情况下,2-0=2,因此它将返回2。

    这可能吗?我该怎么做?

    希望你理解我刚才说的话:p

    3 回复  |  直到 9 年前
        1
  •  8
  •   T McKeown    6 年前

    你需要提供一种变革机制:

    添加:

    public static int Kills{
        get{  return kills; }
        set{
    
            kills = value;
            //change code here...
           }
    }
    

    只有 set 使用此公共 Kills 所有物不要直接更改实例成员 kills 如果可能的话。但总有例外。

        2
  •  6
  •   Patrick Hofman Wahid Bitar    9 年前

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

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

    更好的选择是实施 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));
            }
        }
    }
    
        3
  •  0
  •   Akshey Bhat    9 年前
    static int Kills
    {
     get{
    return kills;
    }
     set{
        OnVarChange(kills,value);
        kills = value;
    }
    }
    

    为定义属性 kills 。使用此属性更改的值 杀死 。可以使用此属性的set访问器调用方法来检测变量的更改 杀死 .