2

这个问题是为懒惰的 VB 程序员准备的。请。

在 vb 中我可以做到,而且不会出现任何错误。

示例 1

Dim x As String = 5
Dim y As Integer = "5"
Dim b As Boolean = "True"

示例 2

Dim a As EnumType = 4
Dim v As Integer = EnumType.EnumValue

示例 3

Private Sub ButtonClick(sender As Object, e As EventArgs)
    Dim btn As Button = sender        
End Sub

示例 4

Private Sub ButtonClick(sender As Button, e As EventArgs)
    Dim data As Contact = sender.Tag
End Sub

如果我确实知道预期的运行时类型,这是否“禁止”依赖于 vb 语言内置转换?我什么时候可以依靠?

4

4 回答 4

3

当然不是“禁止”使用Option Strict Off,但几乎每个人都强烈建议使用Option Strict On.

原因在其他问题中解释,例如this

于 2010-04-12T09:42:46.950 回答
1

对 MarkJ 的评论移动到每个 OP 的回答

随意依赖它,只要确保你知道隐式演员正在做什么的规则。也就是说,示例#4 看起来将来很容易破解,如果之前至少有一个空检查,我会更高兴。

于 2010-04-12T15:43:40.323 回答
0

如果您使用的是 Visual Basic 2008,则另一个选项是显式地进行强制转换(例如 Option Strict On)并依赖 Option Implicit On,因此您不需要两次编写类型。

Dim x = 5.ToString()  
Dim data = DirectCast(sender.Tag, Contact)
于 2010-04-12T03:06:20.653 回答
0

像这样的“懒惰”做法具有讽刺意味的是,从长远来看,它们通常最终会花费你更多的时间。您真的可以绝对确定您的输入将始终采用可以在所有情况下和所有语言环境中自动转换为预期类型的​​格式吗?

考虑所有可能的影响并处理几乎不可避免的错误,可能会花费更多的时间,而不仅仅是强输入变量、严格验证输入并在需要的地方显式转换。

于 2010-04-12T18:14:32.987 回答