Quali sono le differenze funzionali più importanti tra C # e VB.NET?

Certamente c‘è la differenza nella syntax generale, ma quali altre distinzioni critiche esistono? Ci sono alcune differenze, giusto?

I confronti collegati sono molto approfonditi, ma per quanto riguarda le principali differenze vorrei osservare quanto segue:

  • C # ha metodi anonimi VB li ha anche adesso
  • C # ha la parola chiave yield (blocchi iteratori) VB11 ha aggiunto questo
  • VB supporta l’ associazione tardiva implicita (C # ha un’associazione tardiva esplicita ora tramite la parola chiave dynamic)
  • VB supporta i letterali XML
  • VB non fa distinzione tra maiuscole e minuscole
  • Altri snippet di codice pronti all’uso per VB
  • Altri strumenti di refactoring pronti all’uso per C # Visual Studio 2015 ora forniscono gli stessi strumenti di refactoring per VB e C #.

In generale le cose su cui MS si concentra su ciascuna di esse variano, perché le due lingue sono rivolte a un pubblico molto diverso. Questo post del blog ha un buon riepilogo del pubblico di destinazione. Probabilmente è una buona idea determinare il pubblico in cui ti trovi, perché determinerà il tipo di strumenti che otterrai da Microsoft.

Questo argomento ha avuto molto tempo da quando è stato rilasciato .Net 2.0. Vedi questo articolo di Wikipedia per un riassunto leggibile.

Questo può essere considerato syntax, ma VB.NET è case in sensitive mentre C # è case sensitive .

Questo è un riferimento molto completo.

Dal momento che presumo tu possa google, non penso che un link a più siti sia quello che stai cercando.

La mia risposta: scegli la base sulla storia dei tuoi sviluppatori. C # è più simile a JAVA e probabilmente C ++. VB.NET era più facile per i programmatori VB, ma immagino che non sia più un problema sin da subito non ci sono nuovi programmatori .NET provenienti dal vecchio VB.

La mia opinione è che VB sia più produttivo di C #, sembra che sia sempre avanti in termini di strumenti di produttività (come intelisense), e raccomanderei vb over c # a qualcuno che chiede. Certo, qualcuno che sa di preferire c # non chiederà, e c # è probabilmente la scelta giusta per lui.

Anche se lo zucchero di syntax su C # 3 ha davvero spinto la barra in avanti, devo dire che alcune delle cose da Linq a XML in VB.Net sembrano abbastanza belle e rendono la gestione di XML complessi e profondamente nidificati un po ‘più tollerabili. Solo un po.

Una differenza lampante sta nel modo in cui gestiscono i metodi di estensione (Vb.Net consente effettivamente qualcosa che C # non fa – passando il tipo su cui il metodo di estensione viene definito come ref): http://blog.gadodia.net/extension- metodi-in-vbnet-e-c /

A parte la syntax non molto più. Entrambi compilano esattamente lo stesso IL, quindi puoi compilare qualcosa come VB e rifletterlo in C #.

La maggior parte delle apparenti differenze sono lo zucchero sintattico. Ad esempio, VB sembra supportare i tipi dinamici, ma in realtà sono altrettanto statici dei C # – il compilatore VB li calcola.

Visual Studio si comporta in modo diverso con VB che con C #: nasconde molte funzionalità, ma aggiunge la compilazione in background (ideale per i progetti di piccole dimensioni, il hogging delle risorse per quelli di grandi dimensioni) e un migliore supporto per gli snippet.

Con sempre più “magie” del compilatore in C # 3 VB.Net è davvero indietro. L’unica cosa che VB ha ora che C # non è la parola chiave handles – e questo è un vantaggio discutibile.

@ Tom – che è davvero utile, ma un po ‘obsoleto – VB.Net ora supporta anche i documenti XML con '''

@ Luca – VB.Net non ha ancora metodi anon, ma ora supporta lambda.

La più grande differenza a mio parere è la possibilità di scrivere codice non sicuro in C #.

Sebbene VB.NET supporti try … catch tipo di gestione delle eccezioni, ha ancora qualcosa di simile a ON ERROR di VB6. ON ERROR può essere seriamente abusato, e nella stragrande maggioranza dei casi, prova … la cattura è di gran lunga migliore; ma ON ERROR può essere utile quando si gestiscono le operazioni di timeout di COM in cui l’errore può essere intrappolato, decodificato e il “try again” finale è una semplice riga. Puoi fare lo stesso con try … catch ma il codice è molto più confuso.

Questo argomento è brevemente descritto su wikipedia e harding.

http://en.wikipedia.org/wiki/Comparison_of_C_Sharp_and_Visual_Basic_.NET http://www.harding.edu/fmccown/vbnet_csharp_comparison.html

Basta passare e prendere nota di ciò.

Quando arriva a IL è tutto solo bit. Questa insensibilità al caso è solo un passaggio pre-compilatore. Ma il consenso generale è, vb è più prolisso. Se puoi scrivere c # perché non salvare gli occhi e le mani e scrivere la quantità minore di codice per fare la stessa cosa.

Una differenza lampante sta nel modo in cui gestiscono i metodi di estensione (Vb.Net consente effettivamente qualcosa che C # non fa – passando il tipo su cui il metodo di estensione viene definito come ref): http://blog.gadodia.net/extension- metodi-in-vbnet-e-c /

Scott Hanselman ha recentemente scritto un interessante articolo in contrasto con var e Dim: Back to Basics: var! = Dim

Sì VB.NET ha risolto la maggior parte dei problemi VB6 e ne ha fatto un corretto linguaggio OOP – es. Simile nelle abilità a C #. AlthougnI preferisco C #, trovo il vecchio costrutto VB ON ERROR utile per gestire i timeout di interoperabilità di COM. Qualcosa da usare saggiamente però – ON ERROR è facilmente abusato !!