回调函数检查整数的状态

时间:2012-09-28 16:11:02

标签: c# windows-phone-7 callback

我正在为我的编程类制作一个WP7-app,我想实现一个回调函数来检查一个整数的状态,而不是调用该函数来显式检查它。整数在按下按钮时迭代,当它达到最大输入时,我希望有一个回调函数检查这个,但我不完全确定如何实现它。

private void Right_Button_Click(object sender, RoutedEventArgs e)
    {
        if (current_input <= MAX_INPUT)
        {
            user_input[current_input] = 3;
            current_input++;
            display_result();
        }

    }

    #endregion

    void display_result()
    {
        //will move alot of this to the a result page
        DateTime time_end = DateTime.Now;
        TimeSpan difference = time_end.Subtract(timer);
        time_stamp = difference.ToString();
        bool combination_error = true;
        if (current_input == 4)
        {
            for (int i = 0; i < MAX_INPUT; i++)
            {
                if (user_input[i] != combination[i])
                {
                    combination_error = false;
                    break;
                }
            }

            if (combination_error)
            {
                MessageBox.Show("Correct combination The timer is " + time_stamp);
            }
            else
            {
                MessageBox.Show("Wrong combination");
            }
        }
    }

在我增加current_input之后,我现在显式地调用显示结果,而不是为此创建一个回调函数。

1 个答案:

答案 0 :(得分:0)

您无法在整数上放置回调函数,但是,您可以将整数作为属性公开,并从属性setter中调用函数。看看这个例子:

private int _myInteger = 0;

private int MyInteger {
    get
    {
         return _myInteger;
    } 
    set 
    {
        _myInteger = value;
        if (_myInteger <= MAX_INPUT)
            MyCallBackFunction();
    }
}

private void Right_Button_Click(object sender, RoutedEventArgs e)
{
    MyInteger = MyInteger + 1;
    // Do your other stuff here
}

private void MyCallBackFunction()
{
    // This function executes when your integer is <= MAX_VALUE
    // Do Whatever here
    display_result();
}

这样做是通过私有属性公开你的整数。只要通过setter设置属性(例如使用MyInteger = MyInteger + 1;语法),就可以让你的setter检查条件并执行你的回调函数。