2016-06-20 3 views
0

Я искал это некоторое время, и я ничего не нашел для своей проблемы.Обнаружение изменения переменной C#

У меня есть целое число:

private static int kills = 0; 

Я хочу функцию для запуска при том, что изменения переменных. Например, сейчас 0. Если он изменится на 2, мне нужна функция вроде OnVarChange, которая будет вызываться, и эта функция OnVarChange вернет сумму, которая была изменена. В этом случае 2-0 = 2, поэтому он вернется 2.

Возможно ли это? Как мне это сделать?

Надеюсь, вы понимаете, что я только что сказал: р

+0

Вы можете сделать это свойство и вызвать 'OnVarChange', когда назначенное значение отличается. – juharr

ответ

5

Вы должны предоставить механизм изменения:

Добавить:

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

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

Только set с помощью этой общественной Kills собственности

1

Make свойство, которое допускает логику внутри нее. Это было бы хорошим местом, чтобы добавить этот вид функциональности:

private static int kills = 0; 

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

Лучшим вариантом было бы реализовать INotifyPropertyChanged, который представляет собой интерфейс, интерфейс и другие части рамки можно подобрать и действовать дальше.

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

Определить свойство для kills. Используйте это свойство, чтобы изменить значение kills. Вы можете использовать set accessor этого свойства, чтобы вызвать метод для обнаружения изменения в переменной kills.

Смежные вопросы