Domanda

Certamente c'è una differenza nella sintassi generale, ma quali altre distinzioni critiche esistono?Ci sono Alcuni differenze, vero?

È stato utile?

Soluzione

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

  • C# ha metodi anonimiAnche VB ha questi adesso
  • C# ha la parola chiave yield (blocchi iteratori)VB11 ha aggiunto questo
  • Supporta VB associazione tardiva implicita (C# ora ha un'associazione tardiva esplicita tramite la parola chiave dinamica)
  • VB supporta i valori letterali XML
  • VB non fa distinzione tra maiuscole e minuscole
  • Altri frammenti di codice pronti all'uso per VB
  • Altri strumenti di refactoring pronti all'uso per C#Visual Studio 2015 ora fornisce gli stessi strumenti di refactoring sia per VB che per C#.

In generale, gli aspetti su cui la SM si concentra per ciascuna lingua variano, perché le due lingue si rivolgono a un pubblico molto diverso. Questo post sul blog ha una buona sintesi del pubblico target.Probabilmente è una buona idea determinare a quale pubblico appartieni, perché determinerà il tipo di strumenti che riceverai da Microsoft.

Altri suggerimenti

Questo argomento è stato molto discusso da quando è stato rilasciato .Net 2.0.Guarda questo Wikipedia articolo per un riassunto leggibile.

Questa può essere considerata sintassi, ma VB.NET è il caso Insensibile mentre C# è maiuscolo e minuscolo sensibile.

Questo è un riferimento molto completo.

Dato che presumo che tu possa cercare su Google, non penso che un collegamento a più siti sia ciò che stai cercando.

La mia risposta:Scegli in base alla storia dei tuoi sviluppatori.C# è più simile a JAVA e probabilmente a C++.VB.NET era più semplice per i programmatori VB, ma immagino che non sia più un problema poiché non ci sono nuovi programmatori .NET provenienti dal vecchio VB.

La mia opinione è che VB sia più produttivo di C#, sembra che sia sempre all'avanguardia in termini di strumenti di produttività (come intelisense) e consiglierei vb su C# a qualcuno che lo chiede.Naturalmente, qualcuno che sa di preferire C# non lo chiederà e probabilmente C# è la scelta giusta per lui.

Sebbene lo zucchero della sintassi su C#3 abbia davvero spinto in avanti il ​​livello, devo dire che alcune delle cose Linq to XML in VB.Net sembrano piuttosto carine e rendono un po' più tollerabile la gestione di XML complessi e profondamente annidati.Solo un po.

Una differenza evidente sta nel modo in cui gestiscono i metodi di estensione (Vb.Net in realtà consente qualcosa che C# non consente: passare il tipo su cui viene definito il metodo di estensione come ref): http://blog.gadodia.net/extension-methods-in-vbnet-and-c/

A parte la sintassi, non più così tanto.Entrambi vengono compilati esattamente nello stesso IL, quindi puoi compilare qualcosa come VB e rifletterlo in C#.

La maggior parte delle differenze apparenti sono lo zucchero sintattico.Ad esempio, VB sembra supportare i tipi dinamici, ma in realtà sono statici quanto quelli C#: il compilatore VB li rileva.

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

Con sempre più "magia" del compilatore in C#3 VB.Net è davvero rimasto indietro.L'unica cosa che VB ora ha che C# non ha è il file handles parola chiave - e questo è di discutibile vantaggio.

@Tom - davvero utile, ma un po' obsoleto - VB.Net ora supporta anche i documenti XML '''

@Luke - VB.Net non dispone ancora di metodi anonimi, ma ora supporta lambda.

La differenza più grande secondo me è la capacità di scrivere codice non sicuro in C#.

Sebbene VB.NET supporti la gestione delle eccezioni del tipo try...catch, ha ancora qualcosa di simile a ON ERROR di VB6.ON ERROR può essere seriamente abusato e, nella stragrande maggioranza dei casi, provare... catturare è molto meglio;ma ON ERROR può essere utile quando si gestiscono operazioni di timeout COM in cui l'errore può essere intercettato, decodificato e il "riprova" 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_.NEThttp://www.harding.edu/fmccown/vbnet_csharp_comparison.html

Basta sfogliarlo e prendere appunti su questo.

Quando si arriva a IL sono solo frammenti.L'insensibilità al caso è solo un passaggio del precompilatore.Ma il consenso generale è che vb è più dettagliato.Se sai scrivere C#, perché non risparmiare occhi e mani e scrivere una quantità minore di codice per fare la stessa cosa.

Una differenza evidente sta nel modo in cui gestiscono i metodi di estensione (Vb.Net in realtà consente qualcosa che C# non consente: passare il tipo su cui viene definito il metodo di estensione come ref): http://blog.gadodia.net/extension-methods-in-vbnet-and-c/

Scott Hanselmann recentemente ha scritto un interessante articolo che mette a confronto var e Dim: Ritorno alle basi:var!= Dim

Sì, VB.NET ha risolto la maggior parte dei problemi VB6 e lo ha reso un linguaggio OOP corretto, ad es.Simile nelle capacità a C#.Anche se tendo a preferire C#, trovo utile il vecchio costrutto VB ON ERROR per gestire i timeout di interoperabilità COM.Qualcosa da usare saggiamente però: ON ERROR è facilmente abusabile!!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top