我班上有以下声明。
{{1}}
但编译器报告错误
错误CS0220:操作在编译时以检查模式溢出
根据MSDN。
据我所知, SOME_VALUE 在长类型的此范围内。有关为什么我得到这个编译时错误的任何想法?
答案 0 :(得分:4)
计算中的每个单独值都是int
,因此编译器将它们相乘为int
s,因此溢出。最简单的解决方案是使用L
suffix将其中一个或全部标记为long
,这将强制计算以long
完成:
private const long SOME_VALUE= 10L * 1024 * 1024 * 1024;
答案 1 :(得分:2)
添加L
后缀:
public class MyClass
{
private const long SOME_VALUE= (10L * 1024L * 1024L * 1024L); // 10 GB
....
}
没有L
后缀(代表long
)编译器将表达式视为int
一个,并警告整数溢出。