如果没有messagebox.show(),为什么我的循环不能正常工作?

时间:2015-06-07 15:36:05

标签: loops

我想要一个Windows表单做一个" lable countdown"在开始时,我曾经遇到过与其他代码相同的问题,当我在循环中它不会执行直到循环结束但是当我把一个messegebox放在循环中它完美地工作...

例如:

private void button1_Click(object sender, EventArgs e)
    {
        counter();
    }

private void counter()
    {
        for(int i = 3; i > 0; i--)
        {
            Thread.Sleep(1000);
            MessageBox.Show(i.ToString());
            label2.Text = i.ToString();
        }

但是当我拿走messegebox时,程序没有倒计时运行代码并在这种情况下显示最后一个字符1.

1 个答案:

答案 0 :(得分:0)

编译器断定不需要执行整个循环,因为最终结果无论如何都是1。这是loop unrolling的一个例子。