【问题标题】:Detect variable change c# [duplicate]检测变量变化c#[重复]
【发布时间】:2016-06-20 14:05:43
【问题描述】:

我已经搜索了一段时间,但没有找到任何适合我的问题。

我有一个整数:

private static int kills = 0;

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

这可能吗?我该怎么做?

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

【问题讨论】:

  • 您可以将其设为属性并在分配的值不同时调用OnVarChange

标签: c# variables detect


【解决方案1】:

需要提供变更机制:

添加:

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

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

set 使用此公共Kills 属性。如果可能,不要直接更改实例成员kills。但总有例外。

【讨论】:

    【解决方案2】:

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

    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】:
      static int Kills
      {
       get{
      return kills;
      }
       set{
          OnVarChange(kills,value);
          kills = value;
      }
      }
      

      kills 定义一个属性。使用此属性更改kills 的值。您可以使用该属性的 set 访问器调用方法来检测变量 kills 的变化。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-02-25
        • 1970-01-01
        • 2016-09-29
        • 2016-07-04
        • 2016-08-16
        • 2017-06-12
        • 2011-11-24
        相关资源
        最近更新 更多