2012-08-01 14 views
5

Realmente me molesta que el IDE VS 2010 no me esté gritando por intentar pasar Nothing a través de un parámetro de método que toma una enumeración definida por el usuario. En cambio, pasa del 0 al método. C# nunca permitiría esto. ¿Hay algún modificador de nivel de módulo que pueda agregar como option strict que obligue al IDE a no permitir estos tipos de conversiones implícitas?VB.NET: ¿Hay alguna manera de evitar que Nothing pase a 0 por defecto para los tipos de números?

Respuesta

6

Lamentablemente, no.


Pero es posible asignar valores a los miembros de su enumeración, mientras que saltarse 0 (o utilizar un marcador de posición llamado None o algo por el estilo), y al menos manejar este caso en tiempo de ejecución.

Sub Main 
    MyMethod(Nothing) ' throws Exception 
End Sub 

Sub MyMethod(e as MyEnum) 
    If e = 0 Then 
     Throw New Exception 
    End If 
End Sub 

Enum MyEnum 
    a=1 
    b=2 
    c=3 
End Enum 
+0

Buena respuesta, pero me entristece. – oscilatingcretin

3

Nada es el equivalente de por defecto en el lenguaje C#. Entonces no

reconsiderar su estilo de programación, Nada se debe utilizar muy escasamente. Básicamente solo en código genérico, el mismo lugar en el que usaría predeterminado en C#. No lo necesita en ningún otro lugar, VB.NET no insiste en la inicialización de variables como lo hace C#. Cualquier variable de un tipo de referencia se inicializa en Nothing automáticamente. Cringe digno de un programador C# tal vez, pero totalmente idiomático en el código VB.NET.

+0

No creo que sea posible evitar literalmente 'Nothing' como parámetro de método (que es el caso del que habla el OP). – Heinzi

+0

Eso también es posible, los parámetros opcionales siempre han sido bien soportados. –

Cuestiones relacionadas