VB.NET Long轉Integer – 高位轉低位
把C#版純真數據庫讀取轉換成VB.NET 的時候遇到個奇特問題,一開始還以為是語言上的差異,但C#和VB.NET本是同根生,也不至於在高位數值往低位數值轉換的時候出現問題吧?
首先C#裡可以這麼寫
long a = 123456789; int b =(int)a;
這樣寫編譯器是不會搞錯的,而且還可以順利執行。
而VB.NET裡
Dim a As Long = 123456789 Dim b As Int = CInt(a)
這樣寫一般都會提示“算術運算符溢出,這個值對於Int來說太大或者太小”
難道C#的強制轉換真的做到強制了嗎?
谷歌搜索了下,在個一覺偏僻的博客上找到了解決方法,原來國外網站早已經有相關的解答,奈何英文水平渣渣,看不懂而錯過。
照例,要說明C#為什麼不會報錯。
原因很簡單,就是編譯器配置問題,C#在默認情況下,編譯器是不會去檢查運算是否溢出。
而VB.NET在默認情況下編譯器會檢查運算是否溢出,知道原因後一切都好辦了,只需要關閉編譯器的檢查功能即可解決這個問題。
把“不做整數溢出檢查”勾上,那麼VB.NET讀取純真數據庫就完成了。