Pregunta

Ahora, como un programador de C #, sé que los genéricos son impresionantes. Sin embargo, cuando incursionando en algunos VB.NET, descubrí que la siguiente no causa un error del compilador:

Dim instance As List(Of Integer)
instance.Add(True)

¿Por qué es esto? Sé que usted no está obligado a emitir en VB.NET, pero yo habría pensado que esto mata la razón principal para usar los genéricos -. La seguridad de tipos

Editar que no tienen opción estricta en adelante, ya que esto no era un ejercicio de programación real, me acaba de echar un vistazo a VB.NET en teoría. Es una cuestión teórica, ya que estaba esperando a causar un error de compilación, incluso con la opción estricta fuera, al igual que una característica de los tipos genéricos.

¿Fue útil?

Solución

Sin Option Strict On, VB.NET es feliz para convertir implícitamente a Boolean Integer. Recomiendo (sobre todo viniendo de un fondo de C #) que haga Option Strict On el valor predeterminado para su trabajo VB.NET.

Puede hacer esto en Visual Studio en Tools | Options | Projects and Solutions | VB Defaults.

editar para más información sobre la actitud de VB (clásico) 'relajado' con el tipo de conversión, Google 'Mal Tipo coerción'. Aquellos de nosotros que trató de hacer un buen trabajo en VB (clásico) tuvo que luchar con este demonio de tiempo ...

Otros consejos

¿Usted se ha convertido Option Strict en?

VB.NET convierte en el lugar de llamada a la función. La lista (de entero) todavía está almacenando un número entero (-1, que es el valor entero de True)

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