C# 中 ++ 运算符的一致行为
Consistent behaviour of the ++ operator in C#
++
运算符在 C# 中应用于 longs 的行为在应用于 long.MaxValue
时是否一致?该调用不是在 checked
块内进行的。我需要知道 在任何情况下,现在或将来 它是否可能抛出 OverflowException
而不是包装到 long.MinValue
.
即使您不在 checked
块内,如果您在 Visual Studio 中使用 "Check for arithmetic overflow/underflow" 编译项目(或使用 /checked C# 编译器开关) ,那么默认情况下,所有代码的行为就好像它在 checked
块中一样。所以在那种情况下你绝对可以得到一个溢出异常。
来自 C# 语言规范:
For non-constant expressions (expressions that are evaluated at run-time) that are not enclosed by any checked or unchecked operators or statements, the default overflow checking context is unchecked unless external factors (such as compiler switches and execution environment configuration) call for checked evaluation.
++
运算符在 C# 中应用于 longs 的行为在应用于 long.MaxValue
时是否一致?该调用不是在 checked
块内进行的。我需要知道 在任何情况下,现在或将来 它是否可能抛出 OverflowException
而不是包装到 long.MinValue
.
即使您不在 checked
块内,如果您在 Visual Studio 中使用 "Check for arithmetic overflow/underflow" 编译项目(或使用 /checked C# 编译器开关) ,那么默认情况下,所有代码的行为就好像它在 checked
块中一样。所以在那种情况下你绝对可以得到一个溢出异常。
来自 C# 语言规范:
For non-constant expressions (expressions that are evaluated at run-time) that are not enclosed by any checked or unchecked operators or statements, the default overflow checking context is unchecked unless external factors (such as compiler switches and execution environment configuration) call for checked evaluation.