Care este diferența dintre VB.NET și C #? Și de ce Microsoft are două limbi?


Răspunsul 1:

C # este VB cu o sintaxă asemănătoare lui C. A fost creat din două motive:

1. Java crește în popularitate, dar Microsoft nu avea drepturile asupra acesteia.

2. VB avea o stigmă ca limbaj „entry level”. O limbă pentru amatori. Programatorii care au dezvoltat software-ul „real” nu au vrut să-l atingă. Microsoft a simțit că au creat ceva special cu .NET și Visual Basic, dar au avut greutăți ca jucătorii importanți să sară pe band-wagon. Astfel, au creat C # pentru a atrage programatorii C / C ++ în lumea „Visual” și .NET.


Răspunsul 2:

Sunt de acord cu răspunsul lui Clyde, că MS a oferit audiențe diferite fiecărei limbi, iar la nivel tehnic principalele diferențe sunt sintactice. Dacă doriți să vedeți un limbaj .Net care are mult mai multe diferențe decât celelalte două, m-aș gândi la Managed C ++, de când am verificat că are capacitatea de integrare a codului autohton.

Poate fi avantajoasă utilizarea unui limbaj .Net peste altul pentru diferite utilizări. Am lucrat la o aplicație web. cu ani în urmă (în. 1.1), unde clientul dorea ca acesta să funcționeze cu Excel într-un fel cludge-ish. Ceea ce îmi amintesc este că am scris porțiunea ASP.Net în C #, deoarece acesta a fost limba pe care am preferat-o, dar am creat un DLL în VB.Net care a interfațat cu Office COM. Pentru mine a avut mai mult sens, deoarece MS a conceput VB (încă din zilele mai vechi de versiuni VB) pentru a lucra cu Office COM (sau, Office COM a fost proiectat să funcționeze cu acesta). Una dintre caracteristicile VB a fost posibilitatea de a lăsa parametrii în apelurile funcționale către obiecte COM. Puteți trece parametrii după cuvinte cheie, astfel încât să puteți selecta ce parametri doriți să completați și pe care să-i părăsiți. Runtime-ul ar inițializa doar parametrii neutilizați la o valoare nulă. Acest lucru a fost foarte util, deoarece unele dintre funcțiile COM pe care le-am folosit aveau o mulțime de valori ale parametrilor nefolosite. C # ar putea avea de-a face cu aceleași obiecte, dar ai avut doar sentimentul că trebuie să sari printre cercuri pentru a lucra cu ele, deoarece limbajul nu a fost bine conceput pentru a lucra cu ele. Un exemplu îmi amintesc este că nu a avut această capacitate de trecere a parametrilor selectivi. A trebuit să completezi toate valorile în mod explicit, chiar dacă erau nule.


Răspunsul 3:

VB.NET

  1. VB.NET acceptă scrierea codului non-tip cu tipuri de legături de rulare pentru a susține codul scris pentru VB 6.0. Puteți reduce acest lucru oarecum cu cuvântul cheie „Strict”, dar problema este că programatorii îl opresc! Performanța poate suferi cu adevărat din cauza acestui lucru, pentru a nu menționa erorile de codificare care nu se găsesc până mult mai târziu în ciclul de dezvoltare. Unele dintre tipurile VB primitive nu sunt primitive. Tipurile NET fac din VB o alegere slabă pentru interfațarea cu API-urile externe. Scrierea claselor generice (șabloane) este diferit și poate fi puțin penibil. Integrarea limbii în VS pentru VB nu este la fel de bună ca pentru C #, în special capacitatea de a refactoriza codul

VB.NET

VB.NET


Răspunsul 4:

VB.NET

  1. VB.NET acceptă scrierea codului non-tip cu tipuri de legături de rulare pentru a susține codul scris pentru VB 6.0. Puteți reduce acest lucru oarecum cu cuvântul cheie „Strict”, dar problema este că programatorii îl opresc! Performanța poate suferi cu adevărat din cauza acestui lucru, pentru a nu menționa erorile de codificare care nu se găsesc până mult mai târziu în ciclul de dezvoltare. Unele dintre tipurile VB primitive nu sunt primitive. Tipurile NET fac din VB o alegere slabă pentru interfațarea cu API-urile externe. Scrierea claselor generice (șabloane) este diferit și poate fi puțin penibil. Integrarea limbii în VS pentru VB nu este la fel de bună ca pentru C #, în special capacitatea de a refactoriza codul

VB.NET

VB.NET