Каковы наиболее важные функциональные различия между C # и VB.NET? - PullRequest
33 голосов
/ 14 августа 2008

Конечно, есть разница в общем синтаксисе, но существуют ли другие критические различия? Есть некоторые различия, верно?

Ответы [ 15 ]

1 голос
/ 15 августа 2008

Помимо синтаксиса не так уж много. Они оба компилируются в один и тот же IL, поэтому вы можете скомпилировать что-то как VB и отразить это в C #.

Большинство очевидных различий - синтаксический сахар. Например, VB поддерживает динамические типы, но на самом деле они такие же статические, как C #, - компилятор VB выясняет их.

Visual Studio работает с VB иначе, чем с C # - он скрывает множество функций, но добавляет фоновую компиляцию (отлично подходит для небольших проектов, перехват ресурсов для крупных) и лучшую поддержку фрагментов.

С появлением все большего «волшебства» компилятора в C # 3 VB.Net действительно отстает. Единственное, что VB теперь имеет, чего нет в C #, - это ключевое слово handles, и это спорная выгода.

@ Том - это действительно полезно, но немного устарело - VB.Net теперь также поддерживает документы XML с '''

@ Люк - VB.Net до сих пор не имеет анон-методов, но теперь поддерживает лямбды.

0 голосов
/ 03 января 2011

Да VB.NET исправил большинство проблем VB6 и сделал его правильным языком ООП - т.е. Похожи по способностям на C #. Хотя я обычно предпочитаю C #, я нахожу старую конструкцию VB ON ERROR полезной для обработки тайм-аутов взаимодействия COM. Что-то, чтобы использовать мудро, хотя - ON ERROR легко злоупотребляет !!

0 голосов
/ 18 августа 2008

Скотт Хансельман недавно написал интересную статью, сравнивая var и Dim: Назад к основам: var! = Dim

0 голосов
/ 17 августа 2008

Одно явное отличие заключается в том, как они обрабатывают методы расширения (Vb.Net фактически допускает то, чего не делает C # - передавая тип, для которого метод расширения определяется как ref): http://blog.gadodia.net/extension-methods-in-vbnet-and-c/

0 голосов
/ 15 августа 2008

Когда он добирается до IL, все это просто биты. В этом случае нечувствительность к регистру - просто проход прекомпилятора. Но общее мнение таково: vb более многословен. Если вы можете написать c #, почему бы не сохранить свои глаза и руки и написать меньшее количество кода, чтобы сделать то же самое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...