使用var时的C#For循环类型推断

Rem*_*tec 1 c# int for-loop var type-inference

考虑以下代码......

            double total = Int32.MaxValue;
            total++;

            int previousX = 0;

            for (var x = 0; x <= total; x++)
            {
                if (x == Int32.MaxValue)
                {
                    Console.WriteLine("Int32 max reached.");
                }

                if (x < 0)
                {
                    Console.WriteLine("Counter now < 0.");
                }

                previousX = x;
            }
Run Code Online (Sandbox Code Playgroud)

看来,如果将var与for循环一起使用,则默认类型推断是int.

这是正确的,因为如果计数器超过了int 32的最大值,而不是溢出堆栈,它会将自身重置为零,然后从零开始倒计时.

注意:previousX允许您​​设置断点并查看计数器"x"的先前值是什么.

有谁知道为什么会这样?

通过使用var作为for循环的计数器,似乎有可能进入一些泡菜.

sam*_*son 6

类型x由初始值确定,上面是整数字面值0.

如果你想x成为一个双,那么使用双文字0D.