One thing you can do is use a public property for accessing the Count, and store the value of the property in a private backing field. This way you can compare the incoming value in the setter (which is called when someone is setting the Count property) to the current count. If it’s different, then call DoSomething (and update your backing field):
Property with backing field and custom setter
private int count = 0;
public int Count
{
get
{
return count;
}
set
{
// Only do something if the value is changing
if (value != count)
{
DoSomething();
count = value;
}
}
}
Example Usage
static class Program
{
private static int count = 0;
public static int Count
{
get
{
return count;
}
set
{
// Only do something if the value is changing
if (value != count)
{
DoSomething();
count = value;
}
}
}
private static void DoSomething()
{
Console.WriteLine("Doing something!");
}
private static void Main()
{
Count = 1; // Will 'DoSomething'
Count = 1; // Will NOT DoSomething since we're not changing the value
Count = 3; // Will DoSomething
Console.WriteLine("\nDone!\nPress any key to exit...");
Console.ReadKey();
}
}
Output
2
solved How can i call JUST ONCE a function when a variable changes its value? c# [duplicate]
