David
发布于 2014-07-25 / 3 阅读 / 0 评论 / 0 点赞

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來說太大或者太小” 图像 002 難道C#的強制轉換真的做到強制了嗎? 谷歌搜索了下,在個一覺偏僻的博客上找到了解決方法,原來國外網站早已經有相關的解答,奈何英文水平渣渣,看不懂而錯過。 照例,要說明C#為什麼不會報錯。 原因很簡單,就是編譯器配置問題,C#在默認情況下,編譯器是不會去檢查運算是否溢出。 图像 008 而VB.NET在默認情況下編譯器會檢查運算是否溢出,知道原因後一切都好辦了,只需要關閉編譯器的檢查功能即可解決這個問題。 图像 003 图像 005 图像 006 把“不做整數溢出檢查”勾上,那麼VB.NET讀取純真數據庫就完成了。