应用于++
时,应用于C#中的long的long.MaxValue
运算符的行为是否一致?该调用不是在checked
块内进行的。我需要知道在任何情况下,现在或未来它是否可能抛出OverflowException
而不是包裹到long.MinValue
。
答案 0 :(得分:8)
即使您不在checked
块内,如果在Visual Studio中使用“检查算术溢出/下溢”编译项目(或使用/checked C#编译器开关),那么默认情况下,您的所有代码都会像在checked
块中一样运行。所以在这种情况下你绝对可以获得溢出异常。
答案 1 :(得分:2)
来自C#语言规范:
对于未由任何已检查或未检查的运算符或语句包含的非常量表达式(在运行时计算的表达式),除非外部因素(例如编译器开关和执行环境配置),否则将取消选中默认溢出检查上下文)要求进行检查评估。