Visual Basic ( VB ), первоначально называвшийся Visual Basic .NET ( VB.NET ), представляет собой мультипарадигмальный объектно - ориентированный язык программирования , реализованный на .NET , Mono и .NET Framework . Microsoft запустила VB.NET в 2002 году как преемника исходного языка Visual Basic , последней версией которого была Visual Basic 6.0. Хотя часть имени «.NET» была исключена в 2005 году, в этой статье используется «Visual Basic [.NET]» для обозначения всех языков Visual Basic, выпущенных с 2002 года, чтобы отличить их от классического Visual Basic . Наряду с C# и F# это один из трех основных языков, предназначенных для экосистемы .NET. 6 февраля 2023 года Microsoft обновила свою языковую стратегию VB, заявив, что VB теперь является стабильным языком, и Microsoft будет продолжать его поддерживать. [6]
Интегрированной средой разработки (IDE) Microsoft для разработки на Visual Basic является Visual Studio . Большинство выпусков Visual Studio являются коммерческими ; Единственными исключениями являются Visual Studio Express и Visual Studio Community , которые являются бесплатными . Кроме того, в состав пакета SDK для .NET Framework входит бесплатный компилятор командной строки vbc.exe. Mono также включает в себя компилятор VB.NET с командной строкой.
Visual Basic часто используется в сочетании с библиотекой графического пользовательского интерфейса Windows Forms для создания настольных приложений для Windows . Программирование для Windows Forms с помощью Visual Basic включает перетаскивание элементов управления в форму с помощью конструктора графического интерфейса и написание соответствующего кода для каждого элемента управления.
Библиотека Windows Forms чаще всего используется для создания графических интерфейсов в Visual Basic. Все визуальные элементы в библиотеке классов Windows Forms являются производными от класса Control. Это обеспечивает минимальную функциональность элемента пользовательского интерфейса, такую как расположение, размер, цвет, шрифт, текст, а также общие события, такие как щелчок и перетаскивание. Класс Control также имеет поддержку стыковки, позволяющую элементу управления изменить свое положение под родительским элементом.
Формы обычно разрабатываются в Visual Studio IDE . В Visual Studio формы создаются с помощью методов перетаскивания . Инструмент используется для размещения элементов управления (например, текстовых полей, кнопок и т. д.) в форме (окне). Элементы управления имеют связанные с ними атрибуты и обработчики событий . Значения по умолчанию предоставляются при создании элемента управления, но могут быть изменены программистом. Многие значения атрибутов могут быть изменены во время выполнения в зависимости от действий пользователя или изменений в среде, обеспечивая динамическое приложение. Например, в обработчик событий изменения размера формы можно вставить код, чтобы изменить положение элемента управления так, чтобы он оставался в центре формы, расширялся для заполнения формы и т. д. Вставляя код в обработчик событий для нажатия клавиши в текстовом поле, программа может автоматически переводить регистр вводимого текста или даже запрещать вставку определенных символов.
Visual Basic использует операторы для указания действий. Наиболее распространенным оператором является оператор выражения, состоящий из вычисляемого выражения в одной строке. В рамках этой оценки могут вызываться функции или подпрограммы , а переменным могут быть присвоены новые значения. Чтобы изменить обычное последовательное выполнение операторов, Visual Basic предоставляет несколько операторов потока управления, идентифицируемых зарезервированными ключевыми словами. Структурированное программирование поддерживается несколькими конструкциями, включая две конструкции условного выполнения ( ... ... ... и ... ... ) и три конструкции итеративного выполнения (цикла) ( ... , ... и ). Оператор ... имеет отдельные разделы инициализации и тестирования, оба из которых должны присутствовать. (См. примеры ниже.) Оператор проходит по каждому значению в списке.If
Then
Else
End If
Select Case
Case
End Select
Do
Loop
For
To
For Each
For
To
For Each
Кроме того, в Visual Basic:
REM
, помещенное в начале строки или после любого количества пробелов или символов табуляции в начале строки или после другого кода в строке, указывает, что (оставшаяся часть) строка является комментарием .Ниже приведена очень простая программа на Visual Basic, версия классического примера « Hello, World! », созданная как консольное приложение:
Модуль Модуль1 Sub Main () ' Классический «Hello, World!» демонстрационная программа Консоль . WriteLine ( «Привет, мир!» ) End Sub Конечный модуль
Он печатает « Hello, World! » в окне командной строки . Каждая строка служит определенной цели, а именно:
Модуль Модуль1
Это определение модуля. Модули — это часть кода, которая может содержать объекты любого типа, такие как константы или переменные, функции, методы или классы, но не может быть создана как объекты, такие как классы, и не может наследовать от других модулей. Модули служат контейнерами кода, на которые можно ссылаться из других частей программы. [8]
Обычно модуль и содержащий его файл кода имеют одно и то же имя. Однако это не обязательно, поскольку один файл кода может содержать более одного модуля и/или класса.
Подглавная ( )
Эта строка определяет подпрограмму под названием «Main». «Main» — это точка входа, с которой программа начинает выполнение. [9]
Консоль . WriteLine ( «Привет, мир!» )
Эта строка выполняет фактическую задачу записи вывода. Консоль — это системный объект, представляющий интерфейс командной строки (также известный как «консоль») и предоставляющий программный доступ к стандартным потокам операционной системы . Программа вызывает консольный метод WriteLine, в результате чего переданная ему строка отображается на консоли.
Вместо Console.WriteLine можно использовать MsgBox, который печатает сообщение в диалоговом окне, а не в окне командной строки. [10]
Этот фрагмент кода выводит треугольник Флойда на консоль:
Импортирует System.Console Модульная программа Sub Main () Тусклые строки как целое число ' Проверка ввода. Делайте до целого числа . TryParse ( ReadLine ( «Введите значение количества отображаемых строк: « & vbcrlf ), rows ) AndAlso rows >= 1 WriteLine ( «Допустимый диапазон: 1 и {0}» , Integer . MaxValue ) Loop ' Вывод Floyd's Треугольник Dim current As Integer = 1 Dim row As Integer Dim columns As Integer Для строки = 1 В строки Для столбца = 1 В строку Write ( "{0,-2} " , current ) current += 1 Далее WriteLine () Следующий конец подзаголовка ''' <summary> ''' Подобно Console.ReadLine, но принимает строку подсказки. ''' </summary> Функция ReadLine ( необязательное приглашение As String = Nothing ) As String If приглашение IsNot Nothing then Write ( подсказка ) End If Возврат консоли . ReadLine () Конечная функция Конечный модуль
Вопрос о том, следует ли рассматривать Visual Basic .NET просто как еще одну версию Visual Basic или как совершенно другой язык, остается предметом споров. Имеются новые дополнения для поддержки новых функций, таких как структурированная обработка исключений и сокращенные выражения. Кроме того, при переходе на VB.NET произошли два важных изменения в типах данных: по сравнению с Visual Basic 6 длина Integer
типа данных была увеличена вдвое с 16 до 32 бит, а длина Long
типа данных увеличена вдвое с 32 бит. до 64 бит. Это справедливо для всех версий VB.NET. 16-битное целое число во всех версиях VB.NET теперь называется Short
. Аналогично, редактор Windows Forms по стилю и функциям очень похож на редактор форм Visual Basic.
Что существенно изменилось , так это семантика: от семантики объектно-ориентированного языка программирования, работающего на детерминированном механизме с подсчетом ссылок на основе COM , до полностью объектно-ориентированного языка, поддерживаемого .NET Framework , который состоит из комбинации среды выполнения Common Language ( виртуальная машина , использующая сборку мусора по поколениям и механизм компиляции «точно в срок» ) и гораздо более крупную библиотеку классов . Повышенная широта последнего также является проблемой, с которой приходится сталкиваться разработчикам VB при переходе на этот язык, хотя эта проблема в некоторой степени решается функцией My в Visual Studio 2005.
Изменения изменили многие основные предположения о «правильных» действиях в отношении производительности и удобства обслуживания. Некоторые функции и библиотеки больше не существуют; другие доступны, но не так эффективны, как «родные» альтернативы .NET. Даже если они скомпилируются, большинству преобразованных приложений Visual Basic 6 потребуется определенный уровень рефакторинга , чтобы в полной мере воспользоваться преимуществами нового языка. Доступна документация, охватывающая изменения в синтаксисе, отладке приложений, развертывании и терминологии. [11]
В следующих простых примерах сравниваются синтаксисы VB и VB.NET. Они предполагают, что разработчик создал форму, разместил на ней кнопку и связал продемонстрированные в каждом примере подпрограммы с обработчиком события нажатия упомянутой кнопки. В каждом примере после нажатия кнопки в форме создается окно сообщения «Hello, World».
Визуал Бейсик 6:
Частная подкоманда1_Click () MsgBox « Hello , World» End Sub
VB.NET (можно использовать класс MsgBox или MessageBox):
Частная дополнительная кнопка Button1_Click ( отправитель как объект , e как EventArgs ) Обрабатывает кнопку Button1 . Нажмите MsgBox ( «Hello, World» ), завершите подписку.
Sub
и End Sub
при двойном щелчке соответствующей кнопки в режиме конструктора. Visual Basic .NET также сгенерирует необходимые операторы Class
и End Class
. Разработчику нужно только добавить оператор, чтобы отобразить окно сообщения «Hello, World».Call
).Command1
и Button1
не обязательны. Однако это имена по умолчанию для командной кнопки в Visual Basic 6 и VB.NET соответственно.Handles
ключевое слово используется для того, чтобы сделать подпрограмму Button1_Click
обработчиком события Click
объекта Button1
. В Visual Basic 6 подпрограммы обработчика событий должны иметь определенное имя, состоящее из имени объекта («Command1»), подчеркивания («_») и имени события («Click», следовательно, «Command1_Click»).MessageBox.Show
в Microsoft.VisualBasic
пространстве имен, которую можно использовать (вместо MsgBox
) аналогично соответствующей функции в Visual Basic 6. Существует противоречие [12] о том, какую функцию лучше использовать (не ограничиваясь только отображением окон сообщений). но и относительно других особенностей пространства Microsoft.VisualBasic
имен). Некоторые программисты предпочитают действовать «путем .NET», поскольку классы Framework имеют больше возможностей и менее специфичны для языка. Другие утверждают, что использование специфичных для языка функций делает код более читабельным (например, использование int
(C#) или Integer
(VB.NET) вместо System.Int32
).ByVal sender as Object, ByVal e as EventArgs
стало необязательным.В следующем примере демонстрируется разница между Visual Basic 6 и VB.NET. Оба примера закрывают активное окно .
Визуал Бейсик 6:
Sub cmdClose_Click () Выгрузить меня , завершить подписку
ВБ.НЕТ:
Sub btnClose_Click ( отправитель как объект , e как EventArgs ) обрабатывает btnClose . Нажмите «Закрыть » () «Завершить подписку» .
Префикс «cmd» заменяется префиксом «btn», что соответствует ранее упомянутому новому соглашению. [ который? ]
В Visual Basic 6 не было распространенных сочетаний клавиш операторов. Следующие действия эквивалентны:
Визуал Бейсик 6:
Sub Timer1_Timer () 'Уменьшает высоту формы на один пиксель за такт Me . Рост = Я. _ Высота — 1 конечный переходник
ВБ.НЕТ:
Sub Timer1_Tick ( отправитель как объект , e как EventArgs ) обрабатывает Timer1 . Отметьте меня . Высота —= 1 конечный переходник
C# и Visual Basic — первые языки Microsoft, созданные для программирования на .NET Framework (позже были добавлены F# и другие языки; другие языки также добавили). Хотя C# и Visual Basic синтаксически различны, на этом различия в основном и заканчиваются. Microsoft разработала оба этих языка как часть одной и той же платформы разработки .NET Framework. Оба они разрабатываются, управляются и поддерживаются одной и той же командой разработчиков языков в Microsoft. [13] Они компилируются в один и тот же промежуточный язык (IL), который работает с теми же библиотеками времени выполнения .NET Framework. [14] Хотя существуют некоторые различия в конструкциях программирования, их различия в основном синтаксические, и, если предположить, что вы избегаете библиотек совместимости Visual Basic, предоставляемых Microsoft для облегчения преобразования из Visual Basic 6, почти каждая функция в VB имеет эквивалентную функцию. в C# и наоборот. Наконец, оба языка ссылаются на одни и те же базовые классы .NET Framework для расширения их функциональности. В результате, за некоторыми исключениями, программа, написанная на любом языке, может быть запущена через простой преобразователь синтаксиса для перевода на другой язык. Для этой задачи существует множество продуктов с открытым исходным кодом и коммерческих продуктов.
Требуется кнопка с именем Button1.
Форма публичного класса1 Частная дополнительная кнопка Button1_Click ( отправитель как объект , e как EventArgs ) обрабатывает кнопку Button1 . Нажмите MsgBox ( «Hello world!» , MsgBoxStyle . Information , «Hello world!» ) ' Покажите сообщение «Hello world!». Конечный подконечный класс _
Модуль Модуль1 Подглавная ( ) консоль . WriteLine ( "Hello world!" ) ' Напишите в консоли "Hello world!" и начать новую строку. Консоль . ReadKey () 'Пользователь должен нажать любую клавишу перед завершением работы приложения. Конечный переходной модуль _
Требуется текстовое поле с названием «TextBox1» и кнопка с именем Button1.
Открытый класс Form1 Частный Sub Button1_Click ( отправитель как объект , e как EventArgs ) Обрабатывает кнопку Button1 . Нажмите CreateObject ( «Sapi.Spvoice» ). Speak ( TextBox1 . Text ) Конец подконца класса _
Модуль Модуль1 Частный голос = CreateObject ( «Sapi.Spvoice» ) Частный текст в виде строки Подглавная ( ) Консоль . Write ( «Введите текст для произнесения:» ) ' Скажите: «Введите текст для произнесения:» Текст = Консоль . ReadLine () 'Пользователь должен ввести текст, чтобы произнести его. Голос . Speak ( Text ) ' Произнесите текст, введенный пользователем. Конец субтитра Конечный модуль
Пришедшая на смену классической версии Visual Basic 6.0, первая версия Visual Basic .NET дебютировала в 2002 году [обновлять]. По состоянию на 2020 год выпущено десять версий Visual Basic .NET.
Первая версия, Visual Basic .NET, опирается на .NET Framework 1.0 . Самая важная особенность — управляемый код , который контрастирует с классическим Visual Basic.
Visual Basic .NET 2003 был выпущен вместе с .NET Framework 1.1 . Новые функции включали поддержку .NET Compact Framework и улучшенный мастер обновления VB . Также были улучшены производительность и надежность .NET IDE (особенно фонового компилятора) и среды выполнения. Кроме того, Visual Basic .NET 2003 был доступен в Visual Studio.NET Academic Edition, бесплатно распространяемом среди определенного числа ученых [ ласковые слова ] из каждой страны.
После Visual Basic .NET 2003 Microsoft исключила «.NET» из названия продукта, назвав следующую версию Visual Basic 2005.
В этом выпуске Microsoft добавила множество функций, призванных усилить роль Visual Basic .NET как платформы быстрой разработки приложений и еще больше отличить ее от C# , в том числе:
My.Form2.Text = " MainForm "
System.WindowsApplication1.Forms.Form2.text = " MainForm "
Чтобы устранить разрывы между собой и другими языками .NET, в эту версию добавлено:
В Visual Basic 2005 появился IsNot
оператор, который 'If X IsNot Y'
эквивалентен 'If Not X Is Y'
. Он получил известность [20] , когда выяснилось, что он является предметом патентной заявки Microsoft. [21] [22]
Visual Basic 9.0 был выпущен вместе с .NET Framework 3.5 19 ноября 2007 года.
В этом выпуске Microsoft добавила множество функций, в том числе:
В апреле 2010 года Microsoft выпустила Visual Basic 2010. Microsoft планировала использовать для этого выпуска среду динамического языка (DLR) [23] , но перешла к стратегии совместной эволюции Visual Basic и родственного языка C#, чтобы привести оба языка в более близкое соответствие друг с другом. друг друга. Врожденная способность Visual Basic динамически взаимодействовать с объектами CLR и COM была расширена для работы с динамическими языками, созданными на основе DLR, такими как IronPython и IronRuby . [24] Компилятор Visual Basic был улучшен, чтобы определять продолжение строки в наборе общих контекстов, во многих случаях устраняя необходимость в символах продолжения строки «_». Кроме того, существующая поддержка встроенных функций была дополнена поддержкой встроенных подпрограмм, а также многострочных версий лямбда-выражений Sub и Function. [25]
Visual Basic 2012 был выпущен вместе с .NET Framework 4.5 . Основные функции, представленные в этой версии, включают: [ необходимо дальнейшее объяснение ]
Visual Basic 2013 был выпущен вместе с .NET Framework 4.5.1 вместе с Visual Studio 2013. Также можно создавать приложения .NET Framework 4.5.2, установив Developer Pack. [26]
Visual Basic 2015 (кодовое имя VB «14.0») был выпущен вместе с Visual Studio 2015. Языковые функции включают новый знак «?». оператор для выполнения встроенных проверок нуля, а также включена новая функция интерполяции строк для встроенного форматирования строк. [27]
Visual Basic 2017 (кодовое имя VB «15.0») был выпущен вместе с Visual Studio 2017. Расширена поддержка новых функций языка Visual Basic 15 с версиями 2017, 15.3, 15.5, 15.8. Представляет новые рефакторинги, которые позволяют организовать исходный код одним действием. [28] [29]
Visual Basic 2019 (кодовое имя VB «16.0») был выпущен вместе с Visual Studio 2019. [30] Это первая версия Visual Basic, ориентированная на .NET Core. [31]
Официальный компилятор Visual Basic написан на Visual Basic и доступен на GitHub как часть платформы компилятора .NET . [32] Создание инструментов с открытым исходным кодом для разработки на Visual Basic происходит медленно по сравнению с C# , хотя платформа разработки Mono обеспечивает реализацию библиотек, специфичных для Visual Basic, и компилятор , совместимый с Visual Basic 2005 , написанный на Visual Basic, [33] а также стандартные библиотеки платформы, такие как библиотека графического интерфейса Windows Forms .
MonoDevelop была альтернативной IDE с открытым исходным кодом . Среда Gambas также похожа на Visual Basic, но отличается от нее, как и редактор Visual FB для FreeBasic .
В новой DLR появилась поддержка IronPython, IronRuby, Javascript и новой динамической компиляции VBx.
Visual Basic привязывается к объектам динамических языков, таких как IronPython и IronRuby.