【发布时间】:2013-10-07 12:56:51
【问题描述】:
在网络/stackoverflow 上有一些关于“checked”关键字的使用与编译器选项“检查算术上溢/下溢”的好文章,例如:
http://www.codethinked.com/c-trivia-what-no-overflow
Why doesn't C# use arithmetic overflow checking by default?
Best way to handle Integer overflow in C#?
我仍然不知道我应该使用哪一个。默认情况下,我宁愿使用编译器选项以确保始终安全,不要用 unchecked 关键字弄乱我的代码,不要在某些地方忘记它,最后它不是很常用,所以可能许多开发人员都不知道。
但是,我所受到的实际性能影响有多严重?我猜 MS 设置默认不进行溢出检查是有充分理由的。编译器选项是否只涉及我的代码或每个使用的库和框架本身?
【问题讨论】:
-
我也很想知道 unchecked 是默认值的原因。人们经常声称这是出于性能原因,但我看到有关实际性能影响的相互矛盾的报告。有人说它很重要,有人说它难以察觉。
-
开启检查,并担心 Profiler 告诉您何时何地检查的速度。
标签: c# compiler-construction overflow keyword checked