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
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
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.
Non penso sia possibile evitare letteralmente 'Nothing' come parametro del metodo (che è il caso in cui l'OP sta parlando). – Heinzi
Anche questo è possibile, i parametri opzionali sono sempre stati ben supportati. –
Buona risposta, ma mi rattrista. – oscilatingcretin