2012-04-20 72 views
1

在vb中,您可以使用文本框中的文本而不是数字表达式。我的意思是,如果我写在TextBox1中50,也我可以写这样的代码:vb.net中的文本投射或解析

Dim result As Double = TextBox1.Text + 0.4 

正如你看到的,我没有将任何类型,但它在vb.net

的作品,但我想学习这有什么缺点?

(我刚刚讲的算术运算)

回答

1

在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在幕后为我输入数据类型的方式!

+0

谢谢你的解释..它真的很好:)现在它明确 – unbalanced 2012-04-20 19:25:54

2

引擎盖下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

+0

谢谢你Matt的感兴趣。我已经知道发生了像ctype(...,...)这样的背景,我正在阅读文章..再次感谢你 – unbalanced 2012-04-20 19:27:15