在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