当变量改变其值时,如何调用JUST ONCE函数? C#

时间:2017-05-22 23:25:15

标签: c# variables properties getter

想象一下,我有 int count ,每次更改我想调用函数 DoSomething()我该怎么办?

我认为我必须以某种方式使用属性(并且想知道如何使用属性来实现它),但任何帮助都会很棒。

1 个答案:

答案 0 :(得分:1)

您可以做的一件事是使用公共属性访问Count,并将属性的值存储在私有支持字段中。这样,您可以将setter中的传入value(当有人设置Count属性时调用)与当前count进行比较。如果不同,请拨打DoSomething(并更新您的支持字段):

具有支持字段和自定义设置器的属性

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;
        }
    }
}

使用示例

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();
    }
}

<强>输出

enter image description here