在vb中,您可以使用文本框中的文本而不是數字表達式。我的意思是,如果我寫在TextBox1中50,也我可以寫這樣的代碼:vb.net中的文本投射或解析
Dim result As Double = TextBox1.Text + 0.4
正如你看到的,我沒有將任何類型,但它在vb.net
的作品,但我想學習這有什麼缺點?
(我剛剛講的算術運算)
在vb中,您可以使用文本框中的文本而不是數字表達式。我的意思是,如果我寫在TextBox1中50,也我可以寫這樣的代碼:vb.net中的文本投射或解析
Dim result As Double = TextBox1.Text + 0.4
正如你看到的,我沒有將任何類型,但它在vb.net
的作品,但我想學習這有什麼缺點?
(我剛剛講的算術運算)
在VB.NET中,只有在OPTION STRICT關閉的情況下才能避免這種情況 - 否則會產生錯誤。
在編程中,您應該儘可能精確地使用您的數據類型。所以,你可以寫你的代碼行:
Dim result as Double = Convert.ToDouble(TextBox1.Text) + 0.4
或者,你可以做一些錯誤陷阱:
Dim Result as Double
Try
Result = Convert.ToDouble(TextBox1.Text) + 0.4
Catch
Result = 0
End Try
還有很多其他的東西,你可以使用,包括的TryParse。您甚至可以使用CDbl等VBA功能。
如果您依賴於所謂的隱式類型轉換,VB.NET將嘗試爲您轉換數據類型。這種方法的缺點是它會導致懶惰的編程。在這種情況下,你希望VB.NET具有容錯能力,但是如果你不這樣做呢?如果你允許它糾正你的錯誤,你最終會得到你產生錯誤的情況,因爲你的代碼沒有執行正確的數據類型。
右 - 這是黨的路線。就我個人而言,我非常喜歡VBA在幕後爲我輸入數據類型的方式!
引擎蓋下VB.net做的TextBox1.Text
隱式收縮轉換(即CType(TextBox1.Text, Double)
),使這項工作。這意味着你有Option Strict
關閉。可能最大的這樣做的缺點是你會違反Option Strict On的最佳做法。
通過讓Option Strict off可以防止編譯器強制執行類型檢查。這使您可以使用更多的VB6方式進行編碼。因此允許縮小範圍的隱式轉換。如果您打開了此功能,則只允許擴大轉化次數(不會產生負面影響)。
雖然在這種特定情況下,它可能似乎不是什麼大不了的事,但離開它關閉你的整個代碼庫可能會導致微妙的錯誤在蠕動。
我建議你閱讀Widening and Narrowing Conversions (Visual Basic) on MSDN。
謝謝你Matt的感興趣。我已經知道發生了像ctype(...,...)這樣的背景,我正在閱讀文章..再次感謝你 – unbalanced 2012-04-20 19:27:15
謝謝你的解釋..它真的很好:)現在它明確 – unbalanced 2012-04-20 19:25:54