VB.NET 中的隐式转换
-
26-09-2019 - |
题
这个问题是针对懒惰的 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 语言的内置转换?什么时候我才可以依靠呢?
解决方案
评论Markj移动以回答每个OP
随意依靠您想要的一切,只需确保您知道隐式演员所做的规则即可。也就是说,示例4看起来很容易在将来打破,如果以前至少有无效检查,我会更加快乐。
其他提示
当然不是“禁止”使用 Option Strict Off
但是几乎每个人都强烈建议使用 Option Strict On
.
例如,其他问题中解释了原因 这个.
如果您使用的是Visual Basic 2008,另一个选项是执行铸造expliticitaly(例如,oparial on Coption),并依赖于所隐含的选项,以便您不需要两次编写类型。
Dim x = 5.ToString()
Dim data = DirectCast(sender.Tag, Contact)
具有讽刺意味的是,像这样的“懒惰”做法从长远来看往往会花费你更多的时间。您真的可以绝对确定您的输入将始终采用可以在所有情况下和所有区域设置下自动转换为预期类型的格式吗?
考虑所有可能的影响并处理几乎不可避免的错误,可能会花费更多的时间,而不仅仅是强类型变量、严格验证输入以及在需要时显式转换。
不隶属于 StackOverflow