1

在 vb 中,您可以使用文本框中的文本而不是数字表达式。我的意思是,如果我在 textbox1 中写 50 并且我也可以这样写:

 Dim result As Double = TextBox1.Text + 0.4

如您所见,我没有转换任何类型,但它可以在 vb.net 中使用

但我想了解这种使用的缺点是什么?

(我只是在谈论算术运算)

4

2 回答 2

2

在引擎盖下 VB.net 正在对TextBox1.Text(ie CType(TextBox1.Text, Double)) 进行隐式缩小转换以使其工作。这意味着你已经Option Strict关闭这样做的最大缺点可能是您将违背 Option Strict On 的最佳实践。

通过关闭 Option Strict,您可以防止编译器强制执行类型检查。这允许您以更 VB6 的方式编写代码。因此,允许缩小范围的隐式转换。如果您已将其打开,则只允许扩大转化(没有潜在的负面影响)。

虽然在这种特定情况下,这似乎没什么大不了的,但是将其留给整个代码库可能会导致细微的错误蔓延。

我建议在 MSDN 上阅读有关 Widening and Narrowing Conversions (Visual Basic) 的内容

于 2012-04-20T18:43:11.273 回答
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 在幕后为我转换数据类型的方式!

于 2012-04-20T18:44:29.763 回答