C#面试题更新 2026-08-03

请解释 C# 中的溢出检查机制,包括其作用、默认行为以及如何启用或禁用。

考察说明

考查对 C# 中整数运算溢出处理机制的理解。

回答思路

  1. 【回答框架 1】C# 的溢出检查用于检测整数运算结果超出类型范围的情况,默认情况下,非检查上下文中的溢出会静默截断,不抛出异常。
  2. 【回答框架 2】在 checked 上下文中,溢出会抛出 OverflowException,可通过 checked 关键字或编译器选项启用。
  3. 【回答框架 3】使用 unchecked 关键字可显式禁用溢出检查,即使全局启用也可局部关闭。
  4. 【回答框架 4】溢出检查适用于整数类型(如 int、long)的算术运算、转换和显式转换,不适用于浮点数。
  5. 【回答框架 5】性能上,启用溢出检查会带来少量开销,因此默认关闭,但在需要确保数据完整性的场景应启用。
  6. 【关键点 1】默认非检查上下文,溢出静默截断。
  7. 【关键点 2】checked 上下文抛出 OverflowException。
  8. 【关键点 3】unchecked 可局部禁用检查。
  9. 【关键点 4】适用于整数运算,不适用于浮点。
  10. 【关键点 5】启用检查有性能开销。
  11. 【易错点 1】不要认为默认会抛出异常,实际是截断。
  12. 【易错点 2】浮点数运算不受溢出检查影响。
  13. 【易错点 3】checked 只影响整数运算,不影响其他类型。