检测变量c#

时间:2016-06-20 14:05:43

标签: c# variables detect

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

我有一个整数:

private static int kills = 0;

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

这可能吗?我该怎么做?

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

4 个答案:

答案 0 :(得分:5)

您需要提供更改机制:

添加:

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

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

set使用此公开Kills属性。如果可能,请勿直接更改实例成员kills。但总有一个例外。

答案 1 :(得分: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));
        }
    }
}

答案 2 :(得分:0)

最简单的Google搜索会告诉您实施Property Change Notification并为您提供一个非常容易理解的示例:

public class Person : INotifyPropertyChanged
{
  private string name;
  // Declare the event
  public event PropertyChangedEventHandler PropertyChanged;

  public Person()
  {
  }

  public Person(string value)
  {
      this.name = value;
  }

  public string PersonName
  {
      get { return name; }
      set
      {
          name = value;
          // Call OnPropertyChanged whenever the property is updated
          OnPropertyChanged("PersonName");
      }
  }

  // Create the OnPropertyChanged method to raise the event
  protected void OnPropertyChanged(string name)
  {
      PropertyChangedEventHandler handler = PropertyChanged;
      if (handler != null)
      {
          handler(this, new PropertyChangedEventArgs(name));
      }
  }
}

答案 3 :(得分:0)

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

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