Подтвердить что ты не робот

Каковы наиболее важные функциональные различия между С# и VB.NET?

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

4b9b3361

Ответ 1

Связанные сравнения очень тщательны, но что касается основных отличий, я бы заметил следующее:

  • У С# есть анонимные методы У VB есть и эти, тоже
  • С# имеет ключевое слово yield (блоки итератора) VB11 добавил этот
  • VB поддерживает неявное последнее связывание (С# имеет явное связывание позднее через динамическое ключевое слово)
  • VB поддерживает XML-литералы
  • VB нечувствителен к регистру
  • Дополнительные фрагменты кода для VB
  • Дополнительные инструменты для рефакторинга для С# Visual Studio 2015 теперь предоставляет те же инструменты рефакторинга как для VB, так и для С#.

В целом все, на что ориентируется MS, для каждого варьируется, потому что два языка ориентированы на очень разные аудитории. Это сообщение в блоге содержит хорошее резюме целевых аудиторий. Вероятно, это хорошая идея, чтобы определить, к какой аудитории вы находитесь, потому что она определит, какие инструменты вы получите от Microsoft.

Ответ 2

У этой темы было много времени, так как был выпущен .NET 2.0. См. Статью Wikipedia для читаемого резюме.

Ответ 3

Это можно рассматривать как синтаксис, но VB.NET нечувствителен к регистру, а С# - чувствителен к регистру.

Ответ 4

Это является очень всеобъемлющей ссылкой.

Ответ 5

Поскольку я предполагаю, что вы можете использовать Google, я не думаю, что ссылка на другие сайты - это то, что вы ищете.

Мой ответ: выберите базу в истории ваших разработчиков. С# больше JAVA, и, возможно, С++. VB.NET был проще для программистов VB, но я думаю, что это уже не проблема. Синус не содержит новых .NET-программистов из старого VB.

Мое мнение, что VB более продуктивен, чем С#, кажется, что он всегда впереди с точки зрения инструментов производительности (например, intelisense), и я бы рекомендовал vb over С# кому-то, кто спрашивает. Конечно, кто-то, кто знает, что он предпочитает С#, не будет спрашивать, а С#, вероятно, правильный выбор для него.

Ответ 6

Хотя синтаксический сахар на С# 3 действительно продвинул планку вперед, я должен сказать, что некоторые элементы Linq для XML в VB.Net кажутся довольно приятными и делают обработку сложного, глубоко вложенного XML немного более терпимым. Немного.

Ответ 7

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

Ответ 8

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

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

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

С большим количеством компилятора "магия" в С# 3 VB.Net действительно отстает. Единственное, что у VB теперь имеет то, что С# не является ключевым словом handles, а также спорным преимуществом.

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

@Luke - VB.Net до сих пор не имеет анонимных методов, но теперь поддерживает lambdas.

Ответ 9

Самая большая разница, на мой взгляд, заключается в способности писать небезопасный код на С#.

Ответ 10

Хотя VB.NET поддерживает обработку исключений типа catch... catch, у него все еще есть нечто похожее на VB6 ON ERROR. ON ERROR можно серьезно злоупотреблять, и в подавляющем большинстве случаев попробуйте... улов намного лучше; но ON ERROR может быть полезна при обработке операций тайм-аута COM, где ошибка может быть захвачена, декодирована, а окончательная "повторите попытку" - простая одна строка. Вы можете сделать то же самое с try... catch, но код намного беспорядочен.

Ответ 12

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

Ответ 13

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

Ответ 15

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