C# 面试题 目录

C# 中 checked 和 unchecked 关键字的作用

推荐答案

在 C# 中,checkedunchecked 关键字用于控制整数算术运算和转换的溢出检查。

  • checked:当使用 checked 关键字时,如果算术运算或转换导致溢出,程序将抛出 System.OverflowException 异常。

  • unchecked:当使用 unchecked 关键字时,即使算术运算或转换导致溢出,程序也不会抛出异常,而是继续执行并返回截断后的结果。

本题详细解读

checked 关键字

checked 关键字用于显式启用溢出检查。当在 checked 块中执行整数算术运算或转换时,如果结果超出了目标数据类型的范围,程序将抛出 System.OverflowException 异常。

-- -------------------- ---- -------
--- --- - -------------
---
-
    --- ------ - ----------- - --- -- -- -----------------
-
----- ------------------ ---
-
    ------------------------ - - ------------
-

unchecked 关键字

unchecked 关键字用于显式禁用溢出检查。当在 unchecked 块中执行整数算术运算或转换时,即使结果超出了目标数据类型的范围,程序也不会抛出异常,而是返回截断后的结果。

默认行为

在 C# 中,默认情况下,编译器的溢出检查行为取决于项目的编译设置。如果启用了 /checked+ 编译器选项,则默认启用溢出检查;如果启用了 /checked- 编译器选项,则默认禁用溢出检查。

使用场景

  • checked:适用于需要确保数据完整性和安全性的场景,例如金融计算或关键业务逻辑。

  • unchecked:适用于性能敏感的场景,或者当你知道溢出不会导致问题时,例如位操作或某些算法实现。

总结

checkedunchecked 关键字提供了对整数算术运算和转换的溢出检查的细粒度控制。通过合理使用这两个关键字,可以在保证程序正确性的同时,优化性能。

纠错
反馈