在 vb 中,您可以使用文本框中的文本而不是数字表达式。我的意思是,如果我在 textbox1 中写 50 并且我也可以这样写:
Dim result As Double = TextBox1.Text + 0.4
如您所见,我没有转换任何类型,但它可以在 vb.net 中使用
但我想了解这种使用的缺点是什么?
(我只是在谈论算术运算)
在引擎盖下 VB.net 正在对TextBox1.Text
(ie CType(TextBox1.Text, Double)
) 进行隐式缩小转换以使其工作。这意味着你已经Option Strict
关闭。这样做的最大缺点可能是您将违背 Option Strict On 的最佳实践。
通过关闭 Option Strict,您可以防止编译器强制执行类型检查。这允许您以更 VB6 的方式编写代码。因此,允许缩小范围的隐式转换。如果您已将其打开,则只允许扩大转化(没有潜在的负面影响)。
虽然在这种特定情况下,这似乎没什么大不了的,但是将其留给整个代码库可能会导致细微的错误蔓延。
我建议在 MSDN 上阅读有关 Widening and Narrowing Conversions (Visual Basic) 的内容。
在 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 在幕后为我转换数据类型的方式!