【发布时间】:2014-01-31 19:41:12
【问题描述】:
如果您将以下代码放入 .NET 4.5 应用程序中:
public const long MAXIMUM_RANGE_MAGNITUDE = int.MaxValue + 1;
生成编译器错误,说明“在检查模式下编译时操作溢出”。我知道我可以把它放在一个“未经检查”的块中并且没问题,但我的问题是为什么错误首先出现?显然 long 可以容纳 int 的最大值加一。
请注意,使用 Int32 和 Int64 代替 long 和 int 似乎没有帮助。
【问题讨论】:
-
不会溢出很长时间;它溢出了一个 int。
-
当运行时评估它时,它需要一个 32 位整数并将其加 1。
-
所以唯一的方法是在未选中模式下?