为什么 VB.NET 默认抛出溢出异常



来自 MSDN:

要使算术、强制转换或转换操作引发溢出异常,该操作必须在已检查的上下文中进行。默认情况下,检查 Visual Basic 中的算术运算和溢出;在 C# 中,它们不是。如果操作发生在未经检查的上下文中,则通过丢弃任何不适合目标类型的高阶位来截断结果。

据我所知,默认情况下,由于性能问题,C# 和 F# 不会检查算术溢出/下溢。但是为什么 VB.NET 将它们检查为默认值?

老实说,人们应该勤奋地设计,这样就不会发生意外的溢出,就像一些低级语言所要求的那样。也许在 C# 中,他们相信如果你过度降低,你是故意这样做的,例如哈希代码生成,如果你自己不信任你,语言有检查工具。此外,如果记住嵌套在选中太繁琐,您可以更改编译器设置,使其始终处于活动状态,模拟 VB 环境。

最新更新