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. –
- 1. SQL: selezionare un elenco di numeri da "nothing"
- 2. VB.Net Linq alle entità Null Comparison - 'Is Nothing' or '= Nothing'?
- 3. Modo per mescolare rapidamente i numeri da 1 a 4?
- 4. Tipi per numeri grandi
- 5. Tipi interi da utilizzare per i numeri interi Core
- 6. i membri della classe VB.NET pubbliche per default
- 7. Esiste un modo per vincolare i tipi di unione?
- 8. Esiste un modo per mantenere i dati HSQLDB?
- 9. Esiste un modo per emulare i tipi lineari in Haskell?
- 10. C'è un modo per creare tipi nominali in TypeScript che estendono i tipi primitivi?
- 11. Un modo semplice per convertire da/per i tipi variante in C++
- 12. VB.NET equivalente di VB6 Attributo Item.VB_UserMemId = 0
- 13. Controllo per la variante valore di "Nothing"
- 14. vb.net: numero indice di un "per ogni"
- 15. Esiste un modo Backbone per formattare i numeri nella vista?
- 16. un modo semplice per mantenere un heap minimo con stl?
- 17. C'è un modo per concatenare i tipi anonimi C#?
- 18. Tipi Nullable in VB.NET?
- 19. I tipi di dati haskell sono co-algebre di default?
- 20. C'è un modo per emettere i numeri solo da un elenco python?
- 21. Come ottenere i numeri di linea VB.NET nello stack trace
- 22. Assegnazione di numeri "nudi" a nuovi tipi
- 23. itoa per i numeri negativi?
- 24. Esiste un modo semplice per randomizzare un elenco in VB.NET?
- 25. Confronto di tipi in VB.NET
- 26. Aggiunta di una parola chiave a VB.net? ("Esiste" vs "IsNot Nothing")
- 27. C'è un modo per ereditare FAKE in C#/VB.NET?
- 28. Un modo migliore per aggregare i dati e mantenere i nomi di struttura di tabelle e colonne con i panda
- 29. Fattoriale/i di N numeri per ciclo
- 30. C'è un modo per mantenere i divisori attorno a una preferenza non selezionabile?
Buona risposta, ma mi rattrista. – oscilatingcretin