Сравнение Visual Basic и Visual Basic .NET
![]() | В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
Visual Basic .NET был выпущен Microsoft в 2002 году как преемник исходного Basic Visual языка программирования . Он был реализован на .NET Framework 1.0 . Главной новой функцией стал управляемый код . Программисты, знакомые только с Visual Basic, вероятно, столкнулись бы с трудностями при работе с новой версией или адаптации для нее существующих программ.
Очевидные существенные различия
[ редактировать ]Новая платформа мало походила на свою предшественницу. [ нужна ссылка ] Хотя программисты ожидали, что смогут перекомпилировать исходный код Visual Basic в целевой .NET, реальность ситуации заключалась в том, что Visual Basic .NET представлял собой совершенно другую парадигму. [ нужна ссылка ]
Если оставить в стороне очевидные различия в синтаксисе, Visual Basic .NET обеспечивает практически ту же функциональность, что и C# (поскольку они оба компилируются в MSIL , причем наиболее очевидным отличием является нечувствительность к регистру Visual Basic .NET, сохраняя исходную нечувствительность к регистру Visual Basic). , что представляет собой большую проблему для программистов C# , пытающихся взаимодействовать с разработчиками Visual Basic .NET, чем что-либо еще.
Основной синтаксис остается очень похожим: условия, циклы, процедуры и подпрограммы объявляются и записываются одинаково (см. Visual Basic). Мобильность от предыдущих итераций Visual Basic к Visual Basic .NET действительно является частью существующего кода: программисты с опытом работы в обоих мирах должны эффективно ориентироваться на новую платформу со старой логикой. Разработчику Visual Basic .NET придется научиться использовать базовые типы .NET, а не то, к чему они привыкли в Visual Basic.
Программист, который работал только с Visual Basic, может столкнуться с трудным процессом обучения при переходе на Visual Basic .NET. Программист, владеющий другим языком или имеющий опыт работы со средой выполнения .NET, должен справиться. Было бы лучше думать о Visual Basic .NET как о новом языке, вдохновленном классическим Visual Basic, а не как о продолжении Visual Basic 6.0, с дополнительными трудностями для миграции программистов, поскольку VB.NET взаимодействует с .NET Framework, тогда как VB6 был основан на объектной модели компонентов (COM). [ нужна ссылка ]
Более детальное сравнение
[ редактировать ]Есть некоторые немедленные изменения, на которые разработчикам следует обратить внимание:
Больше C-подобного синтаксиса
[ редактировать ]Visual Basic .NET позволяет +=
, -=
, *=
, /=
, \=
, ^=
, и &=
составные операторы, чтобы более длинные строки, например:
variable = variable + 1
теперь можно записать как:
variable += 1
Однако операторы увеличения и уменьшения не поддерживаются.
Короткозамкнутая логика
[ редактировать ]В предыдущих итерациях Visual Basic все инструкции в условии оценивались, даже если результат условия можно было определить до его оценки. Например:
If foo() And bar() Then
' code here is executed if foo() and bar() both return True, however, if foo() returns False, bar() is still evaluated
End If
Это было не только неэффективно, но и могло привести к неожиданным результатам для любого человека, привыкшего к другому языку. В Visual Basic .NET появились новые операторы AndAlso и OrElse. [1] были добавлены операторы для обеспечения краткой оценки, как и во многих других языках.
Явных типов, подобных указателям, больше нет.
[ редактировать ]Типы переменных Var* устарели в Visual Basic .NET. Общая среда выполнения решает, какие типы являются ссылочными типами, а какие типами значений, поэтому это больше не является областью программиста.
Свойства: Let и Set
[ редактировать ]Свойства класса больше не требуют операторов Let и Set.
Отладочная печать
[ редактировать ]Debug.Print заменяется на Debug.Write и Debug.WriteLine.
Процедуры
[ редактировать ]В Visual Basic .NET вызов процедуры должен содержать круглые скобки.
Visual Basic .NET требует спецификации ByVal или ByRef для параметров. В Visual Basic спецификацию можно было опустить, подразумевая по умолчанию ByRef. Большинство сред разработки, таких как Visual Studio .NET , автоматически вставляют ByVal, поэтому фактически по умолчанию используется ByVal, а не ByRef. Существуют инструменты для преобразования кода Visual Basic в VB.NET, например мастер обновления Visual Basic, который был включен в Visual Studio .NET 2002 и 2003. Инструменты преобразования при необходимости автоматически вставляют ByRef, сохраняя семантику приложения Visual Basic.
Массивы с отсчетом от нуля
[ редактировать ]В Visual Basic 5.0 и 6.0 традиционно используются массивы с отсчетом от нуля (нижняя граница по умолчанию), если не объявлено «Option Base 1». Это было источником многих ошибок в программах Visual Basic, особенно когда речь шла о взаимодействии за пределами библиотек программ. Хотя среда общеязыкового выполнения .NET может поддерживать массивы с любым базовым значением, Visual Basic .NET и C# предоставляют только массивы и списки с отсчетом от нуля, а спецификация общего языка .NET требует, чтобы массивы начинались с нуля для совместимости между языками .NET.
Зубчатые массивы
[ редактировать ]Visual Basic .NET представил концепцию зубчатого массива , согласно которой строки могут иметь неравную длину в отличие от единой длины массивов, навязанной программистам Visual Basic.
Вариант типа данных исчез.
[ редактировать ]В языках, компилируемых на платформу .NET, типы являются строгими. Хотя среда выполнения допускает анонимный объект, который не имеет заранее определенного именованного типа, тип переменной может не меняться в течение ее времени жизни, поэтому необходимо удалить тип данных Variant. Однако на практике тип «Объект» ведет себя примерно так же.
Настоящее объектно-ориентированное программирование
[ редактировать ]Visual Basic был объектно-ориентированным языком. Он поддерживал классы, но не другие концепции, которые могли бы сделать его объектно-ориентированным языком. Visual Basic .NET — это настоящий объектно-ориентированный язык со следующими возможностями:
- наследование
- перегрузка функции
Хотя ни один язык, ориентированный на .NET, не допускает множественного наследования классов, множественное наследование интерфейсов поддерживается.
Переход с COM на NET
[ редактировать ]Хотя IDE делает разумную работу по сокрытию этого факта, в Visual Basic .NET отсутствует зависимость от объектов ActiveX (хотя существуют механизмы взаимодействия с COM) . в .NET [2] ) в пользу компонентов .NET, предлагающих аналогичную функциональность. Этот сдвиг хорош для разработчика Visual Basic, поскольку большая часть проблем с производительностью Visual Basic связана со стоимостью COM-интерфейса.
Элементарное управление геометрией через дизайнер форм.
[ редактировать ]Одним из настоящих проклятий в жизни разработчика Visual Basic всегда было написание кода изменения размера. Хотя парадигма WinForms оставляет желать лучшего в отделе управления геометрией перед лицом таких наборов инструментов, как Qt и GTK+ , по крайней мере, разработчик может привязывать виджеты к формам вместо того, чтобы писать кучу кода в обработчиках OnResize.
Опция Явный по умолчанию
[ редактировать ]В Visual Basic .NET Option Explicit включен по умолчанию.
Ссылки
[ редактировать ]- ^ «Логические и побитовые операторы — Visual Basic» . 15 сентября 2021 г.
- ^ «Устаревшая техническая документация Visual Studio 2003» .
Внешние ссылки
[ редактировать ]- Пять основных изменений между VB 6 и VB.NET. Архивировано 16 октября 2011 г. на Wayback Machine.
- Зубчатые массивы в VB.NET