例如,让我们使用ArrayList类的Add方法。如果我在Visual Studio C#项目中使用默认编译器设置,其中未检查算术溢出,如果我添加了太多项,ArrayList.Add()会抛出OverflowException吗?使用checked
或unchecked
围绕方法调用会有什么不同吗?
答案 0 :(得分:2)
一般情况下,BCL不会在启用溢出检查的情况下运行。在应用程序中启用它不会影响已编译的二进制文件仅对您的代码。
想象一下如果你可以控制BCL代码的执行方式会出现的所有问题。每次编写算术表达式时,您都必须考虑它在两种情况下的运行方式,以便获得100%可靠的代码。因为任何人都可以使用checked
/ unchecked
块来呼叫您,从而更改语义。
如果您可以在他们希望它运行的地方关闭溢出检查,请考虑使用安全敏感API可能带来的所有乐趣。
答案 1 :(得分:0)
它是一个构建选项,您可以在解决方案设置中更改它(单击相应的复选框)