Implicit casting in VB.NET

孤人 提交于 2019-12-12 21:05:12

问题


The question is intended for lazy VB programmers. Please.

In vb I can do and I won't get any errors.

Example 1

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

Example 2

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

Example 3

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

Example 4

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

If I surely know the expected runtime type, is this 'forbidden' to rely on the vb-language built-in casting? When can I rely?


回答1:


Comment to MarkJ move to answer per OP

Feel free to rely on it all you want, just make sure you know the rules for what the implicit cast is doing. That said, example #4 looks really easy to break in the future, I'd be much happier if there was at least a null-check before.




回答2:


It is certainly not "forbidden" to use Option Strict Off but nearly everyone strongly advises using Option Strict On.

The reasons are explained in other questions, for instance this.




回答3:


If you are using Visual Basic 2008, another option is doing the casting explicitaly (e.g. Option Strict On) and rely on the Option Implicit On so you don't need to write the type twice.

Dim x = 5.ToString()  
Dim data = DirectCast(sender.Tag, Contact)



回答4:


The irony of "lazy" practices like this is that they often end up costing you more time in the long run. Can you really be absolutely certain that your inputs will always be in a format that can automatically be cast to the intended type, under all circumstances and in all locales?

Thinking through all the possible implications, and handling the almost inevitable bugs, will probably take more time than just strongly typing your variables, strictly validating your inputs, and explicitly casting where needed.



来源:https://stackoverflow.com/questions/2619597/implicit-casting-in-vb-net

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!