Pregunta

La pregunta está destinada a programadores de VB perezosos. Por favor.

En VB puedo hacer y no recibiré ningún error.

Ejemplo 1

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

Ejemplo 2

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

Ejemplo 3

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

Ejemplo 4

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

Si seguramente sé el tipo de tiempo de ejecución esperado, ¿está esto 'prohibido' confiar en el casting incorporado en el idioma VB? ¿Cuándo puedo confiar?

¿Fue útil?

Solución

Comentar a Markj Mover para responder por OP

Siéntase libre de confiar en todo lo que quiera, solo asegúrese de conocer las reglas de lo que está haciendo el elenco implícito. Dicho esto, el ejemplo #4 parece realmente fácil de romper en el futuro, sería mucho más feliz si hubiera al menos una verificación nula antes.

Otros consejos

Ciertamente no está "prohibido" de usar Option Strict Off Pero casi todos aconsejan con fuerza el uso Option Strict On.

Las razones se explican en otras preguntas, por ejemplo este.

Si está utilizando Visual Basic 2008, otra opción es hacer la explicitalidad de casting (por ejemplo, la opción estricta) y confiar en la opción implícita para que no necesite escribir el tipo dos veces.

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

La ironía de las prácticas "perezosas" como esta es que a menudo terminan costándole más tiempo a largo plazo. ¿Realmente puede estar absolutamente seguro de que sus aportes siempre estarán en un formato que se pueda lanzar automáticamente al tipo previsto, en todas las circunstancias y en todos los lugares?

Pensar en todas las posibles implicaciones y manejar los errores casi inevitables, probablemente tomará más tiempo que solo escribiendo fuertemente sus variables, validando estrictamente sus entradas y lanzar explícitamente donde sea necesario.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top