Jump to content

Сравнение C Sharp и Visual Basic .NET

C# и Visual Basic (.NET) — два основных языка программирования, используемых для программирования на платформе .NET .

История языка

[ редактировать ]

C# и VB.NET — очень разные языки по синтаксису и истории.

Как следует из названия, синтаксис C# основан на базовом языке программирования C, первоначально разработанном Деннисом Ритчи из Bell Labs (AT&T) в 1970-х годах. [1] Java и C++ — два других языка программирования, синтаксис которых также основан на синтаксисе C. [2] поэтому они имеют общий внешний вид. Дополнительную информацию по этой теме см. в разделе «Сравнение C Sharp и Java» .

Корни BASIC уходят корнями в Дартмутский колледж . [3] BASIC (универсальный код символических инструкций для начинающих) был разработан в 1960-х годах как метод преодоления трудностей использования языка ассемблера, написанного для мейнфреймов и оборудования, специфичных для конкретного процессора и/или торговой марки. Программирование изначально зависело от аппаратного обеспечения больше по маркетинговым причинам, чем для сохранения логической структуры программирования, которая должна выходить за рамки аппаратного обеспечения. (Заявление Microsoft о своей операционной системе заключалось в том, чтобы освободить потребителей от устройств, специфичных для аппаратного обеспечения, путем инкапсуляции этих задач в ее операционной системе.) Код стал «переносимым» благодаря компилятору, и фактически как Visual Basic .NET, так и C# используют та же CLR (Common Language Runtime) сегодня. Microsoft и HP были заинтересованы в создании стандартного языка ISO, что, однако, и было первоначальной целью; HP отказалась от поддержки, и компьютерный язык ISO так и не стал международным стандартом.

VB.NET берет свое начало в BASIC. Вначале BASIC использовался в студенческом сообществе как «базовый» язык для первого знакомства с компьютерным программированием, и эта аббревиатура точно представляла этот язык. В 1970-х годах производители микрокомпьютеров того времени подхватили этот язык для использования как в качестве простого языка программирования, встроенного в ПЗУ, так и в качестве квазиоперационной системы для управления вводом/выводом. В начале 1980-х годов этот язык был подхвачен Microsoft и значительно расширился за пределы своего первоначального замысла до их языка/платформы «Visual Basic», который продавался на протяжении 1990-х годов как инструмент «быстрой разработки приложений» (RAD) для программирования под Windows. [4] Он напрямую конкурировал с другими инструментами RAD 1990-х годов, такими как PowerBuilder . [5] Несмотря на то, что Visual Basic был успешной платформой разработки, выпуск ее 6-й версии (VB6) был прекращен, когда Microsoft представила .NET Framework и связанную с ней платформу разработки Visual Studio в начале 2000-х годов. В то время текущие языки C++ и VB6 использовались Microsoft в качестве основы для двух новых языков программирования в их новой «Интегрированной среде разработки (IDE)». Эти языки получили названия C# и VB.NET.

В феврале 2017 года Microsoft сообщила о своем намерении положить конец стратегии «коэволюции» между двумя языками, существовавшей с 2010 года, и позволить двум языкам снова развиваться независимо. C# в настоящее время является доминирующим языком разработки на базе Microsoft. Разработчики заметят, что VB 15 (впервые появившийся в Visual Studio 2017) не хватает определенных языковых возможностей, содержащихся в новом C# 7.3. [6]

Сравнение языков

[ редактировать ]

Хотя C# и VB.NET синтаксически сильно различаются, на этом различия в основном и заканчиваются. Microsoft разработала оба этих языка как часть одной и той же платформы разработки .NET Framework. Оба они разрабатываются, управляются и поддерживаются одной и той же командой разработчиков языков в Microsoft. [7] Они компилируются в один и тот же промежуточный язык (IL), который работает с теми же библиотеками времени выполнения .NET Framework. [8] Хотя существуют некоторые различия в конструкциях программирования (подробнее обсуждаются ниже), их различия в основном синтаксические, и, если предположить, что вы избегаете библиотек совместимости Visual Basic, предоставляемых Microsoft для облегчения преобразования из VB6, почти каждая команда в VB имеет эквивалентную команду. в C# и наоборот. Наконец, оба языка ссылаются на одни и те же базовые классы .NET Framework для расширения их функциональности. В результате, за некоторыми исключениями, программа, написанная на любом языке, может быть запущена через простой преобразователь синтаксиса для перевода на другой язык. Для этой задачи существует множество продуктов с открытым исходным кодом и коммерческих продуктов. Единственные фундаментальные различия между языками можно найти в реализации интерфейсов, а также в объявлении, вызове и обработке событий. Хотя оба языка являются языками программирования высокого уровня , VB.NET в некоторых отношениях поддерживает несколько более высокий уровень абстракции.

Многоязычная поддержка во время выполнения

[ редактировать ]

Одной из основных целей .NET была многоязычная поддержка. Цель проекта заключалась в том, чтобы все различные языки Microsoft имели одинаковый уровень доступа ко всем функциям ОС , имели одинаковый уровень мощности и удобства использования и упрощали вызов модуля на одном языке к написанному. на другом языке.

При реализации все языки программирования .NET используют один и тот же механизм выполнения, единое абстрактное синтаксическое дерево и общий промежуточный язык . Кроме того, все языки .NET имеют доступ к функциям платформы, включая сбор мусора, межъязыковое наследование, обработку исключений и отладку . Это позволяет создавать один и тот же двоичный файл на любом языке программирования .NET.

Среда разработки

[ редактировать ]

Visual Studio предоставляет незначительные различия в среде разработки для C# и VB.Net. С каждым последующим выпуском Visual Studio различия между средами разработки для этих языков уменьшались. Например, ранние версии Visual Studio имели плохую поддержку Intellisense в C# по сравнению с Visual Basic .NET и не предлагали фоновую компиляцию для C#. [9] В настоящее время основными отличиями сред разработки являются дополнительные возможности Visual Basic .NET, зародившиеся в VB6, в том числе:

  • Пространство имен по умолчанию скрыто (но его можно отключить).
  • Некоторые файлы проекта скрыты (пользователь может их показать)
  • Автоматически сгенерированный My.* пространства имен содержат множество часто используемых ярлыков, перенесенных из VB6, таких как методы работы с реестром и файлом конфигурации приложения.

Фоновая компиляция — это функция среды разработки Visual Studio , при которой код компилируется так, как он написан программистом, с целью выявления ошибок компиляции без необходимости сборки решения. Эта функция доступна для Visual Basic начиная с .NET 1.1 и присутствовала в ранних версиях Visual Studio для Visual Basic .NET. Однако фоновая компиляция является относительно новой концепцией для Visual C# и доступна в пакете обновления 1 для Visual Studio 2008 Standard Edition и более поздних версий. Явным недостатком C# является то, что панель «Список ошибок» не обновляется до тех пор, пока решение не будет перестроено. Рефакторинг больших проектов на C# осложняется необходимостью часто пересобирать решение, чтобы выявить ошибки компиляции. [10] В Visual Basic это не так, поскольку панель «Список ошибок» синхронизируется с фоновым компилятором.

Фоновая компиляция менее требовательна к системным ресурсам и приводит к ускорению циклов сборки. [10] Это особенное преимущество при работе с большими проектами, поскольку оно может значительно сократить время, необходимое для начала отладки в IDE. [10]

Особенности языка

[ редактировать ]

Основная часть различий между C# и VB.NET с технической точки зрения — это синтаксический сахар . То есть большинство функций есть на обоих языках, но некоторые вещи проще сделать на одном языке, чем на другом. Многие различия между двумя языками на самом деле сосредоточены вокруг IDE .

Возможности Visual Basic .NET, которых нет в C#

[ редактировать ]
  • Переменные можно объявить с помощью WithEvents построить. Эта конструкция доступна для того, чтобы программист мог выбрать объект из раскрывающегося списка « Имя класса» , а затем выбрать метод из «Объявления», раскрывающегося списка сигнатуру метода . чтобы автоматически вставить
  • Автопровязка событий. VB.NET имеет Handles синтаксис событий, который связывает обработчики событий с переменными объекта, а не с объектами.
  • Запуск событий осуществляется с помощью RaiseEvent Ключевое слово, дающее IDE возможность показать список доступных событий на выбор. RaiseEvent неявно проверяет, подключены ли какие-либо обработчики событий. (в C# создание события синтаксически идентично вызову процедуры, и для проверки проводных обработчиков событий требуется дополнительная строка кода)
  • Делегатов событий не нужно объявлять. Они неявно объявляются в объявлении событий.
  • Обращение к объекту с использованием неквалифицированной точечной ссылки, используя With ... End With структура
  • XML-литералы [11]
  • Встроенные объявления даты, например #12/31/2000#
  • Module (хотя статические классы C# имеют дополнительную семантику, но каждое поле должно быть индивидуально объявлено как статическое)
  • Члены Moduleимпортированы в текущий файл, к ним можно получить доступ без предшествующего метода доступа к контейнеру [12]
  • The My пространство имен. [13]
  • Компоненты COM и их совместимость были более мощными в VB.NET, поскольку тип объекта привязывается во время выполнения; [14] однако в C# 4.0 добавлен dynamic тип, который функционирует как форма поздней привязки Object
  • Пространства имен можно импортировать на уровне проекта, поэтому их не нужно импортировать в каждый отдельный файл, как в C#.
  • Определение констант условного компилятора
  • Методы свойств могут принимать параметры
  • Свойства можно передавать методам с помощью ByRef параметры ( ref параметры в C#). В C# вам нужно написать три дополнительные инструкции: объявить переменную, скопировать значение свойства в переменную и скопировать переменную обратно в свойство после вызова метода.
  • Enums могут быть определены внутри интерфейсов
  • Case утверждения могут содержать выражения неравенства, например Is >= 3. (в C# это можно имитировать вложенными Else и If заявления)
  • Overloads Ключевое слово указывает, что свойство или процедура переобъявляет одно или несколько существующих свойств или процедур с тем же именем в том же классе или базовом классе. (отсутствие этого ключевого слова в C# может привести к непреднамеренной перегрузке)
  • Implements ключевое слово, указывающее, какие интерфейсы реализует член класса. В C# существует аналогичный синтаксис, но он не является обязательным и может применяться только в том случае, если член реализует один интерфейс.
  • Like оператор для сравнения строк с образцом гораздо проще, чем использование регулярных выражений. (в C# то же самое доступно с помощью метода Microsoft.VisualBasic.CompilerServices.LikeOperator.LikeString, но не как удобное ключевое слово языка)
  • Return заявление не требуется. Возврат также можно выполнить, присвоив значение функции.
  • Visual Basic имеет встроенные константы, такие как vbCrLf и vbTab
  • Нет out Модификатор параметра существует, поскольку в VB все переменные инициализируются автоматически.
  • The MyClass Ключевое слово ведет себя как объектная переменная, ссылающаяся на текущий экземпляр класса в его первоначальной реализации. MyClass похоже на Me, но все вызовы методов для него обрабатываются так, как если бы метод был NotOverridable.
  • MyBase.New используется для явного вызова конструктора базового класса из конструктора производного класса.
  • The My Функция обеспечивает простой и интуитивно понятный доступ к ряду классов .NET Framework, позволяя пользователю Visual Basic взаимодействовать с компьютером, приложением, настройками, ресурсами и т. д.
  • Локальные переменные (т.е. переменные, объявленные внутри процедуры) инициализируются автоматически.
  • Локальные переменные могут быть объявлены с помощью Static модификатор, чтобы сохранить их значение между вызовами процедуры.
  • The Default объявление делает свойство индексом и позволяет использовать более короткий синтаксис для поиска коллекций, например MyCollection(5). В C# есть аналогичная конструкция с повторным использованием ключевого слова this как название объекта недвижимости. Несколько индексаторов могут быть объявлены с использованием ключей разных типов, например MyCollection(5) или MyCollection("Bob").
  • В C# отсутствует DirectCast (сопоставление с одной инструкцией CLR), строгое преобразование типов может быть достигнуто с помощью as оператор, который включает дополнительную защиту от ошибок во время выполнения.
  • В C# отсутствует End оператор, который внезапно завершает работу приложения.
  • Вывод лямбда-выражений Dim x = Function(n As Integer) n + 1

Возможности C#, которых нет в Visual Basic .NET.

[ редактировать ]
  • Используйте справочную структуру C# в VB.NET. Подробную информацию можно найти, например, здесь: https://www.vbforums.com/showthread.php?889867-Use-C-ref-struct-in-VB-NET-Today. -И-голосуйте-против-предотвращения-этого-в-Рослин
  • Многострочные комментарии. В VB это обрабатывается в редакторе Visual Studio IDE, который добавляет к выделенным фрагментам маркеры комментариев.
  • Статические классы (классы, которые не могут содержать нестатические члены, хотя модули VB.NET по сути являются статическими классами с дополнительной семантикой).
  • Можно использовать checked и unchecked контексты для детального управления проверкой переполнения/недополнения
  • Итеративные циклы for могут содержать несколько условных операторов, например for(int i = 0; i < 10 && somethingTrue; i++). Это наследие C, где for оператор по сути является синтаксическим сахаром для while заявление.
  • Методы получения и установки свойства могут реализовывать отдельные интерфейсы. Вместо этого в VB вам придется определить два свойства: свойство только для чтения, реализующее один интерфейс, и свойство только для записи, реализующее другой интерфейс.
  • Неявная реализация интерфейса
  • Можно использовать оператор объединения ?? чтобы вернуть первое ненулевое значение (например. null ?? null ?? 1 возвращает 1). VB.NET придется использовать If функция с двумя параметрами - например If(Nothing, If(Nothing, 1)) возвращает 1.
  • Указатели (в небезопасном контексте)
  • Условный оператор ?: (someThingTrueOrFalse) ? whenTrue() : whenFalse();. VB.NET придется использовать If функция с тремя параметрами - т.е. If(someThingTrueOrFalse, whenTrue(), whenFalse()).

Другие характеристики Visual Basic .NET, неприменимые к C#.

[ редактировать ]
  • Преобразование логического значения True в целое число может дать -1 или 1 в зависимости от используемого преобразования.
  • Присвоение и сравнение переменных использует один и тот же токен: =. В то время как в C# есть отдельные токены, == для сравнения и = присвоить значение
  • Идентификаторы VB.NET не чувствительны к регистру.
  • При присвоении значения переменной с другим типом данных (и с Option Strict не включен), VB.NET будет принудительно использовать значение, если это возможно. Это автоматическое приведение иногда может привести к неожиданным результатам, например:
Dim i As Integer = "1" 'Compiler automatically converts String to Integer
Dim j As String = 1 'Compiler automatically converts Integer to String
If i = j Then 'Compiler does cast and compare between i and j
    MsgBox("Avoid using, but this message will appear!")
End If

Хотя по умолчанию используется Option Strict отключить по соображениям обратной совместимости, это рекомендовано Microsoft [15] и широко считается хорошей практикой Option Strict включено, поскольку это увеличивает производительность приложений и снижает вероятность ошибок в именах и других ошибок программирования. [16]

  • Val() функция, которая также анализирует нулевое значение при преобразовании в двойное (в С# Convert.ToDouble() используется для преобразования любого объекта в значение двойного типа, но выдает исключение в случае нулевого значения)
  • CInt, CStr, CByte, CDbl, CBool, CDate, CLng, CCur, CObj и множество функций преобразования, встроенных в язык.

Другие характеристики C#, неприменимые к Visual Basic .NET.

[ редактировать ]
  • По умолчанию числовые операции не проверяются. Это приводит к немного более быстрому коду, но существует риск того, что числовые переполнения не будут обнаружены. Однако программист может поместить арифметические операции в проверяемый контекст, чтобы активировать проверку переполнения. (Это можно сделать в Visual Basic, отметив соответствующий параметр)
  • Идентификаторы C# чувствительны к регистру.
  • Чтобы присвоить одно и то же значение нескольким переменным, вы можете использовать a=b=c.

Сравнение синтаксиса

[ редактировать ]

Visual Basic .NET завершает блок кода с помощью End BlockName заявления (или Next операторы для цикла for ), которые более знакомы программистам с опытом использования T-SQL . В C# фигурные скобки, {}, используются для разделения блоков, что более знакомо программистам, имеющим опыт работы с другими широко распространенными языками, такими как C++ и Java . Кроме того, в C#, если блок состоит только из одного оператора, фигурные скобки можно опустить.

C# чувствителен к регистру, а Visual Basic .NET — нет. Таким образом, в C# возможно иметь две переменные с одинаковым именем, например variable1 и Variable1. Visual Studio исправит (сделает унифицированным) регистр переменных в том виде, в котором они набираются в VB.NET. Однако в некоторых случаях чувствительность к регистру может быть полезна. Программисты C# обычно пишут имена типов и членов с заглавной буквы, а имена полей и переменных оставляют строчными. Это позволяет, например, довольно естественно называть аргументы метода: public int CalculateOrders(Customer customer). Однако это может вызвать проблемы у тех, кто конвертирует код C# в язык, нечувствительный к регистру, такой как Visual Basic, или у тех, кто не привык читать язык, чувствительный к регистру.

Ключевые слова

[ редактировать ]

Visual Basic не чувствителен к регистру, что означает, что в ключевых словах допустимы любые комбинации букв верхнего и нижнего регистра. Visual Studio автоматически преобразует все ключевые слова Visual Basic в формы, написанные с заглавной буквы по умолчанию, например «Public», «If».

C# чувствителен к регистру, и все ключевые слова C# написаны строчными буквами.

Visual Basic и C# используют большинство ключевых слов, с той разницей, что ключевые слова Visual Basic по умолчанию представляют собой версии ключевых слов C#, написанные с заглавной буквы, например Public против public, If против if.

Некоторые ключевые слова имеют совершенно разные версии в Visual Basic и C#:

  • Friend против internal - модификаторы доступа, разрешающие ссылки между классами, но не между сборками, за исключением дружественных сборок.
  • Me против this - ссылка на текущий экземпляр объекта
  • MustInherit против abstract - предотвращает прямое создание экземпляра класса и заставляет потребителей создавать ссылки на объекты только для производных классов.
  • MustOverride против abstract - за принуждение производных классов к переопределению этого метода
  • MyBase против base - для ссылки на базовый класс, от которого получен текущий класс
  • NotInheritable против sealed - для объявления классов, которые не могут быть унаследованы
  • NotOverridable против sealed - для объявления методов, которые не могут быть переопределены производными классами
  • Overridable против virtual - объявляет метод как способный быть переопределенным в производных классах
  • Overrides против override - для пометки виртуального метода как переопределенного
  • Shared против static - для объявления методов, не требующих явного экземпляра объекта

Некоторые ключевые слова C#, такие как sealed представляют разные вещи при применении к методам, а не к определениям классов. VB.NET, с другой стороны, использует разные ключевые слова для разных контекстов.

Комментарии

[ редактировать ]
С# Визуальный Бейсик .NET
// Single line comment

/* Multi-line comment
   line 2
   line 3 */

/// XML single line comment

/** XML multi-line comment
    line 2
    line 3 */

#if COMMENT
   multi-line comment via pre-processing 
   line 2
   line 3
#endif
' Single line comment

''' XML 1st line comment
''' XML 2nd line comment
''' XML 3rd line comment

REM Comment

#If COMMENT Then
   multi-line comment via pre-processing 
   line 2
   line 3
#End If

Внутристрочные комментарии недоступны.

Условные предложения

[ редактировать ]
С# Визуальный Бейсик .NET
if (condition) {
    // condition is true 
} else if (othercondition) { 
    // condition is false and othercondition is true
} else { 
    // condition and othercondition are false 
}
If condition Then 
    ' condition is true
ElseIf othercondition Then
    ' condition is false and othercondition is true
Else
    ' condition and othercondition false
End If
С# Визуальный Бейсик .NET
for (int i = 0; i < number; ++i) {
    // loop from zero up to one less than number
}
For i As Integer = 0 To number - 1
    ' loop from zero up to one less than number
Next
for (int i = number; i >= 0; --i) {
    // loops from number down to zero
}
For i As Integer = number To 0 Step -1
    ' loops from number down to zero
Next
for (int i = 0; i <= 20; i += 2) {
    // loops from 0 to 20 by 2's
}
For i As Integer = 0 To 20 Step 2
    ' loops from 0 to 20 by 2's
Next
break; //breaks out of a loop
Exit For 'breaks out of a for loop
Exit While 'breaks out of a while loop
Exit Do 'breaks out of a do loop

Сравнители

[ редактировать ]

Примитивные типы

[ редактировать ]
С# Визуальный Бейсик .NET
if (a == b) {
    // equal
}
If a = b Then
    ' equal
End If
if (a != b) {
    // not equal
}

Или:

if (!(a == b)) {
    // not equal
}
If a <> b Then
    ' not equal
End If

Или:

If Not a = b Then
    ' not equal
End If
if (a == b & c == d | e == f) {
    // non-short-circuiting boolean operators
}
If a = b And c = d Or e = f Then
    ' non-short-circuiting boolean operators
End If
if (a == b && c == d || e == f) {
    // short-circuiting boolean operators
}
If a = b AndAlso c = d OrElse e = f Then
    ' short-circuiting boolean operators
End If

Типы объектов

[ редактировать ]
С# Визуальный Бейсик .NET
if (object.ReferenceEquals(a, b)) {
    // variables refer to the same instance
}
If a Is b Then 'Can also be written as If Object.ReferenceEquals(a, b) Then
    ' variables refer to the same instance
End If
if (!object.ReferenceEquals(a, b)) {
    // variables do not refer to the same instance
}
If a IsNot b Then
    ' variables do not refer to the same instance
End If
if (a == b) {
    // instances are equivalent
}
If a = b Then
    ' instances are equivalent
End If
if (a != b) {
    // not equivalent
}
If a <> b Then
    ' not equivalent
End If
var type = typeof(int);
Dim type = GetType(Integer)
if (a is b) {
    // types of a and b are compatible
}
If TypeOf a Is b Then
    ' types of a and b are compatible
End If
if (!(a is b)) {
    // types of a and b are not compatible
}
If TypeOf a IsNot b Then
    ' types of a and b are not compatible
End If

Усыновление и поддержка сообщества

[ редактировать ]

И C#, и VB.NET имеют высокий уровень внедрения и очень активные сообщества разработчиков, и Microsoft полностью поддерживает оба сообщества. Разработчики .NET Framework широко используют VB.NET и C# в качестве основных языков. [17] [18] Однако C# пользуется большей активностью сообщества в Интернете, и по C# доступно больше книг. Это может указывать либо на более широкое распространение C#, либо на то, что пользователям нужна дополнительная помощь по нему.

Примеры внедрения сообществом и промышленностью включают в себя:

  • Индекс сообщества программистов TIOBE за июль 2010 года показывает, что C# превзошел Visual Basic. [19]
  • Индекс сообщества программистов TIOBE показывает, что VB.NET превзошел C# в 2018 году. [20]
  • Первоначальный разработчик языка C# Скотт Уилтамут заявил в блоге за март 2010 года, что «наиболее достоверные цифры, которые у нас есть... показывают примерно равное распространение» для VB.NET и C#. [17]
  • 2007 года Опрос Forrester Research показал, что 59% разработчиков .NET использовали только VB.NET для создания программного обеспечения. [18]
  • Visual Basic Express — самая популярная загрузка из всех загрузок Visual Studio Express . [21]
  • Согласно опросу, проведенному журналом Visual Studio Magazine в ноябре 2007 года , «41 процент заявили, что используют C#, 34 процента программировали на VB.NET, а 25 процентов ответили «другое». [21]
  • Стивен Уайли , менеджер по маркетинговым продуктам компании Apress, сообщил, что «названия C# легко превосходят по продажам титульные книги VB.NET, где-то между 2–1 и 3–1». [21]
  • MSDN Blogs , сайт блогов для сотрудников Microsoft, содержит 770 000 сообщений, посвященных C#, и только 378 000 упоминают VB.Net (по состоянию на 4 февраля 2016 г.). [ нужна ссылка ]
  • Google Groups , поисковая система Usenet , возвращает 35 200 000 совпадений для «VB .Net» и 244 000 000 для «C#» (по состоянию на 4 февраля 2016 г.). [ нужна ссылка ]
  • Опрос пользователей разработчиков Stack Overflow, проведенный в 2018 году, показал, что 35% профессиональных разработчиков использовали C# и только 6,9% использовали VB.NET. [22]

Другие языки

[ редактировать ]

C++/CLI (ранее Managed C++)

[ редактировать ]

C++/CLI (замена Managed Extensions для C++ ) не имеет такого уровня внедрения, как C# или VB.NET, но имеет значительное количество последователей. C++/CLI синтаксически, стилистически и культурно наиболее близок к C#. Однако C++/CLI остается ближе к своим корням C++, чем C#. C++/CLI напрямую поддерживает указатели, деструкторы и другие небезопасные программные концепции, которые не поддерживаются или не ограничены в других языках. Он позволяет напрямую использовать как код .NET, так и стандартный код C++. C++/CLI используется для переноса собственных/устаревших приложений C++ в среду .NET или в случаях, когда программист хочет получить больше контроля над кодом; но этот контроль достигается за счет простоты использования и читаемости. Многие автоматизированные инструменты, поставляемые с Visual Studio, имеют ограниченную функциональность при взаимодействии с кодом C++. Это связано с тем, что отражение не может предоставить столько информации о коде, сколько это возможно для C# и VB.net.

J# занимает далекое четвертое место по внедрению .NET. J# — это язык, предназначенный главным образом для облегчения перехода приложений Java на платформу .NET; он позволяет разработчикам оставить большую часть своего кода Java или J++ без изменений, продолжая выполнять его в среде .NET, что позволяет им индивидуально переносить небольшие его части на другой язык .NET, например C#. J# не получает такого же уровня обновлений, как другие языки, и не имеет такого же уровня поддержки сообщества. Например, Visual Studio 2005 Team System поддерживает автоматическое создание модульных тестов на C#, VB.Net и C++, но исключает J#. Поддержка J# прекращена и не включена в Visual Studio 2008 или более поздние версии, поскольку существующий набор функций J# в значительной степени соответствует потребностям клиентов, а использование J# сокращается.

Дополнительные языки .NET

[ редактировать ]

Все языки .NET компилируются в Common Intermediate Language (CIL), который содержит обширные метаданные и функционально и логически эквивалентен исходному коду языка .NET. По этим причинам, хотя и возможно писать код непосредственно на CIL, это делается редко. Эквивалентность кода языка CIL и .NET позволяет таким инструментам, как .NET Reflector, преобразовывать сборку .NET в исходный код, который практически идентичен исходному исходному коду. Для защиты от этого часто используются обфускаторы кода , которые работают путем прямого изменения CIL сборки, чтобы затруднить или сделать невозможным декомпиляцию на язык .NET более высокого уровня.

  1. ^ Ричи, Деннис (апрель 1993 г.). Чистория (Отчет). Лаборатории Белла. Архивировано из оригинала 3 февраля 2015 г. Проверено 18 августа 2013 г.
  2. ^ «История языка программирования Java» . Freejavaguide.com . Проверено 18 августа 2013 г.
  3. ^ "БАЗОВЫЙ в Дартмуте"
  4. ^ «Рождение Visual Basic» . Forestmoon.com . Проверено 18 августа 2013 г.
  5. ^ «История Powersoft. История PowerBuilder» . Ланниган.орг . Проверено 18 августа 2013 г.
  6. ^ «Языковая стратегия .NET» . Февраль 2017.
  7. ^ Крил, Пол (27 февраля 2009 г.). «Конвергентные языки программирования Microsoft | Мир разработчиков» . ИнфоМир. Архивировано из оригинала 26 января 2013 г. Проверено 18 августа 2013 г.
  8. ^ «Промежуточный язык Microsoft» . Dotnet-guide.com . Проверено 18 августа 2013 г.
  9. ^ Мэтью Герц. «Масштабирование: очень загруженный фоновый компилятор» . Журнал MSDN . Архивировано из оригинала 19 февраля 2008 г. Проверено 16 декабря 2008 г.
  10. ^ Jump up to: а б с «Система и методология, обеспечивающие рефакторинг с помощью компилятора» . Freepatentsonline.com . Проверено 24 февраля 2015 г.
  11. ^ Джонатан Аллен. «Нужны ли в C# XML-литералы VB9?» . Проверено 13 января 2009 г.
  12. ^ «Свойство DateAndTime.Now (Microsoft.VisualBasic)» . Msdn.microsoft.com. 18 февраля 2015 г. Проверено 24 февраля 2015 г.
  13. ^ «Разработка с помощью My (Visual Basic)» . Msdn.microsoft.com. 18 февраля 2015 г. Проверено 24 февраля 2015 г.
  14. ^ «Раннее и позднее связывание» . Visualbasic.about.com. Архивировано из оригинала 25 февраля 2015 года . Проверено 24 февраля 2015 г.
  15. ^ «Опцион строгого заявления» . Msdn.microsoft.com. 18 февраля 2015 г. Проверено 24 февраля 2015 г.
  16. ^ GetDotNetCode.com: «Опция строго включена» . Getdotnetcode.com. Архивировано из оригинала 13 марта 2012 года . Проверено 24 февраля 2015 г.
  17. ^ Jump up to: а б «Коэволюция VB и C#» . MSDN . Проверено 27 марта 2010 г.
  18. ^ Jump up to: а б «Mono переносит программы Visual Basic в Linux» . Linux-Watch . Архивировано из оригинала 14 сентября 2012 г. Проверено 25 марта 2010 г.
  19. ^ «Впервые в истории C# получил рейтинг выше, чем Visual Basic» . Тиобе.com . Проверено 24 февраля 2015 г.
  20. ^ «Индекс ТИОБЕ» . TIOBE.com: Компания по обеспечению качества программного обеспечения . Проверено 27 марта 2019 г.
  21. ^ Jump up to: а б с Патрик Мидер. «Взрывающийся разум C#» . Visual Studio Журнал , ноябрь 2007 г. Архивировано из оригинала 20 апреля 2008 г. Проверено 16 декабря 2008 г.
  22. ^ «Опрос разработчиков Stack Overflow 2018» . Переполнение стека . Проверено 22 апреля 2018 г.


[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: bf3885b9d2fcb915a16efce8167cf9e7__1721612820
URL1:https://arc.ask3.ru/arc/aa/bf/e7/bf3885b9d2fcb915a16efce8167cf9e7.html
Заголовок, (Title) документа по адресу, URL1:
Comparison of C Sharp and Visual Basic .NET - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)