2012-08-01 12 views
5

Mi fa davvero impazzire il fatto che l'IDE di VS 2010 non mi abbaia per aver tentato di passare Nulla attraverso un parametro di metodo che prende un enum definito dall'utente. Invece, sta passando da 0 fino al metodo. C# non lo permetterebbe mai. C'è un modificatore a livello di modulo che posso aggiungere come option strict che costringerà l'IDE a non consentire questo tipo di conversioni implicite?VB.NET: C'è un modo per mantenere Nothing da default a 0 per i tipi di numeri?

risposta

6

Purtroppo no.


Ma è possibile assegnare valori ai vostri membri di enumerazione mentre sono assenti da 0 (o utilizzare un segnaposto di nome None o qualcosa di simile), e almeno gestire questo caso in fase di esecuzione.

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

Buona risposta, ma mi rattrista. – oscilatingcretin

3

Nulla è l'equivalente di predefinita nel linguaggio C#. Quindi no.

riconsiderare la vostra stile di programmazione, Niente dovrebbe essere utilizzato molto parsimonia. Fondamentalmente solo nel codice generico, nello stesso posto dovresti usare predefinito in in C#. Non ne hai bisogno da nessun'altra parte, VB.NET non insiste sull'inizializzazione delle variabili come fa C#. Qualsiasi variabile di un tipo di riferimento viene inizializzata su Nothing automaticamente. Probabilmente un programmatore C# meritevole, ma completamente idiomatico nel codice VB.NET.

+0

Non penso sia possibile evitare letteralmente 'Nothing' come parametro del metodo (che è il caso in cui l'OP sta parlando). – Heinzi

+0

Anche questo è possibile, i parametri opzionali sono sempre stati ben supportati. –

Problemi correlati