在vb中,您可以使用文本框中的文本而不是数字表达式。我的意思是,如果我在textbox1中写50,我也可以写代码:
Dim result As Double = TextBox1.Text + 0.4
如你所见,我没有转换任何类型,但它适用于vb.net
但是我想知道这个使用的缺点是什么?
(我只是谈论算术运算)
答案 0 :(得分:2)
引擎盖下,VB.net正在进行TextBox1.Text
(即CType(TextBox1.Text, Double)
)的隐式缩小转换,以使其发挥作用。这意味着您Option Strict
关闭。这样做的最大缺点可能是你违背了Option Strict On的最佳做法。
通过关闭Option Strict,您将阻止编译器强制执行类型检查。这允许您以更多VB6方式编码。因此允许缩小范围的隐式转换。如果您已打开它,则只允许扩大转换(不具有负面影响的可能性)。
虽然在这个特定的场景中,它可能看起来不是什么大问题,但是将它留给整个代码库可能会导致细微的错误蔓延。
我建议阅读Widening and Narrowing Conversions (Visual Basic) on MSDN。
答案 1 :(得分: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在幕后为我演示数据类型的方式!