Nonostante entrambe le lingue in esecuzione su .NET Framework, presentano alcune differenze che possono rendere alcune cose più facili o addirittura possibili in VB che non sono in C # e viceversa.
Alcune cose in cima alla mia testa:
-
La versione VB della classe Application ha una proprietà SplashScreen. Quando impostato su un modulo nel metodo principale, tale modulo mostrerà quando viene chiamato Application.Run (), fino a quando il modulo principale è pronto per essere mostrato. In C # questo non è disponibile, quindi per fornire funzionalità simili devi "rollare il tuo" usando il Load manager del form principale; i tuoi colleghi VB guarderanno il codice tradotto e diranno "perché non hai semplicemente usato quello che ti dà la lingua?"
-
Correlati: i gestori di eventi (MulticastDelegates) in VB hanno il controllo nullo integrato; puoi generare un evento in VB senza doversi preoccupare se qualcuno sta effettivamente ascoltando. Questo non è così in C #; devi prima eseguire un controllo nullo (e tecnicamente, dato che gli ascoltatori possono cambiare mentre l'evento viene gestito, la migliore pratica nelle applicazioni con thread è quella di "clonare" la raccolta di gestori ed eseguirla invece). Quando tradotto, il codice risultante sarebbe ridondante.
-
La conversione e la conversione funzionano in modo diverso in entrambe le lingue. C # richiede una conversione implicita definita tra due tipi per la conversione. VB al contrario "coercera" il tipo ogni volta che vede QUALSIASI cast valido tra il tipo effettivo e il tipo atteso, che può portare a comportamenti imprevisti quando VB costringe il tipo e quindi sceglie un diverso overload o ramo di codice rispetto allo stesso codice in C # .
Per ulteriori differenze, consulta link
Quindi, consiglierei di imparare la sintassi VB e le differenze linguistiche, e se utilizzi il convertitore su base giornaliera o meno, riconoscerei almeno situazioni in cui lo scopo del codice C # che stai scrivendo sarebbe più facile da realizzare nel VB diretto, o dove il codice C # non tradurrà (blocchi "non sicuri", blocchi "spuntati" / "non selezionati", dichiarazioni di classi parziali, ecc.)