2017-04-03 83 views
0

從MSDN:爲什麼VB.NET默認會拋出OverflowException?

對於算術,鑄造,或轉換操作拋出OverflowException異常,必須發生在checked上下文的操作。默認情況下,檢查Visual Basic中的算術運算和溢出;在C#中,他們不是。如果操作發生在未經檢查的上下文中,則通過丟棄不符合目標類型的任何高位來截斷結果。

據我所知,默認情況下,C#和F#不檢查算術上溢/下溢,因爲性能。但爲什麼VB.NET將它們檢查爲默認值?

+7

「因爲語言設計者認爲這應該是默認的」 - 這幾乎是它的開始和結束;他們只是在意想不到的結果與性能的競爭利益之間作出不同的決定/妥協 –

+1

它是一個來自「Default Template」的設置...如果您想要(高級構建設置),可以對其進行修改,但是重點是什麼。如果你不想讓它取消它... – Codexer

+2

可能重複[OverflowException只在VB.net,而不是在C#](http://stackoverflow.com/questions/36311162/overflowexception-only-in-vb- net-not-in-c-sharp) – Neolisk

回答

1

老實說,人們應該勤於設計,所以不會發生意外溢出,就像一些低級語言所要求的那樣。也許在C#中,他們相信,如果你正在淹沒,你就會故意喜歡哈希碼的生成,例如,如果你自己不信任你,那麼這個語言有檢查過的工具。另外,如果記住嵌套在一個checked中是太麻煩的,你可以改變一個編譯器設置,使它始終處於活動狀態,模擬VB環境。

相關問題