Visual Basic .NET - Visual Basic .NET
Парадигма | Мультипарадигма : структурированная , императивная , объектно-ориентированная , декларативная , универсальная , рефлексивная и управляемая событиями |
---|---|
Разработано | Microsoft |
Разработчик | Microsoft |
Впервые появился | 2001 |
Стабильный выпуск | Версия 16.9 2019 г. / 2 марта 2021 г .
|
Печатная дисциплина | Статические , сильные и слабые , безопасные и небезопасные , именительный падеж |
Платформа | .NET Framework , Mono , .NET |
Операционные системы | В основном Windows Также на Android , BSD , iOS , Linux , macOS , Solaris и Unix |
Лицензия |
Компилятор Roslyn : лицензия Apache 2.0 |
Расширения имени файла | .vb |
Интернет сайт | документы |
Основные реализации | |
Пакет SDK для .NET Framework , компилятор Roslyn и Mono | |
Диалекты | |
Microsoft Visual Basic | |
Под влиянием | |
Классический Visual Basic | |
Под влиянием | |
Маленький Базовый |
Visual Basic , первоначально названный 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. 11 марта 2020 года Microsoft объявила о завершении эволюции языка VB.NET.
Интегрированная среда разработки (IDE) Microsoft для разработки на Visual Basic - это Visual Studio . Большинство выпусков Visual Studio являются коммерческими ; Единственные исключения являются Visual Studio Express и Visual Studio Community , которые являются бесплатными . Кроме того, .NET Framework SDK включает бесплатный компилятор командной строки под названием vbc.exe. Mono также включает компилятор командной строки VB.NET.
Visual Basic часто используется вместе с библиотекой графического интерфейса Windows Forms для создания настольных приложений для Windows . Программирование для Windows Forms с помощью Visual Basic включает перетаскивание элементов управления в форму с помощью конструктора графического интерфейса и написание соответствующего кода для каждого элемента управления.
Синтаксис
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:
- Не существует единого способа определения блоков операторов. Вместо этого определенные ключевые слова, такие как «If… Then» или «Sub» интерпретируются как запускающие подблоки кода и имеют соответствующие ключевые слова завершения, такие как «End If» или «End Sub».
- Операторы заканчиваются двоеточием (":") или концом строки . Многострочные операторы в Visual Basic включают "_" в конце каждой такой строки. В версии 10 и более поздних версиях необходимость в символе продолжения подчеркивания была в значительной степени устранена.
- Знак равенства ("=") используется как при присвоении значений переменным, так и при сравнении.
- Круглые скобки (круглые скобки) используются с массивами как для их объявления, так и для получения значения по заданному индексу в одном из них. Visual Basic использует круглые скобки для определения параметров подпрограмм или функций.
- Сингл кавычки ( ') или ключевое слово
REM
, помещенный в начале строки или после любого числа космических или вкладки символов в начале строки, или после другого кода на линии, указывает на то, что (Оставшаяся часть) строка - это комментарий .
Простой пример
Ниже представлена очень простая программа на Visual Basic, версия классического примера « Hello, World! », Созданная как консольное приложение:
Module Module1
Sub Main()
' The classic "Hello, World!" demonstration program
Console.WriteLine("Hello, World!")
End Sub
End Module
Он печатает « Hello, World! » В окне командной строки . Каждая строка служит определенной цели, а именно:
Module Module1
Это определение модуля. Модули - это раздел кода, который может содержать любой тип объекта, например константы или переменные, функции или методы или классы, но не может быть создан как объекты, например классы, и не может наследовать от других модулей. Модули служат контейнерами кода, на которые можно ссылаться из других частей программы.
Обычно модуль и файл кода, который его содержит, имеют одно и то же имя. Однако это не требуется, поскольку один файл кода может содержать более одного модуля и / или класса.
Sub Main()
Эта строка определяет подпрограмму под названием «Main». «Главная» - это точка входа, с которой программа начинает выполнение.
Console.WriteLine("Hello, world!")
Эта строка выполняет фактическую задачу записи вывода. Консоль - это системный объект, представляющий интерфейс командной строки (также известный как «консоль») и предоставляющий программный доступ к стандартным потокам операционной системы . Программа вызывает консольный метод WriteLine, который заставляет переданную ей строку отображаться на консоли.
Вместо Console.WriteLine можно использовать MsgBox, который печатает сообщение в диалоговом окне вместо окна командной строки.
Сложный пример
Этот фрагмент кода выводит на консоль треугольник Флойда :
Imports System.Console
Module Program
Sub Main()
Dim rows As Integer
' Input validation.
Do Until Integer.TryParse(ReadLine("Enter a value for how many rows to be displayed: " & vbcrlf), rows) AndAlso rows >= 1
WriteLine("Allowed range is 1 and {0}", Integer.MaxValue)
Loop
' Output of Floyd's Triangle
Dim current As Integer = 1
Dim row As Integer
Dim column As Integer
For row = 1 To rows
For column = 1 To row
Write("{0,-2} ", current)
current += 1
Next
WriteLine()
Next
End Sub
''' <summary>
''' Like Console.ReadLine but takes a prompt string.
''' </summary>
Function ReadLine(Optional prompt As String = Nothing) As String
If prompt IsNot Nothing Then
Write(prompt)
End If
Return Console.ReadLine()
End Function
End Module
Сравнение с классическим Visual Basic
Вопрос о том, следует ли рассматривать 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 Runtime (а виртуальная машина с помощью поколений сбора мусора и компиляции точно в момент двигатель) и гораздо большую библиотеку классов . Увеличенная широта последнего также является проблемой, с которой разработчикам VB приходится иметь дело при переходе к языку, хотя это в некоторой степени решается функцией My в Visual Studio 2005.
Изменения изменили многие основные предположения о «правильном» поведении в отношении производительности и ремонтопригодности. Некоторые функции и библиотеки больше не существуют; другие доступны, но не так эффективны, как «родные» альтернативы .NET. Даже если они компилируются, большинству преобразованных приложений Visual Basic 6 потребуется некоторый уровень рефакторинга, чтобы полностью использовать преимущества нового языка. Доступна документация по изменениям синтаксиса, отладке приложений, развертыванию и терминологии.
Сравнительные примеры
Следующие простые примеры сравнивают синтаксис VB и VB.NET. Они предполагают, что разработчик создал форму, разместил на ней кнопку и связал подпрограммы, продемонстрированные в каждом примере, с обработчиком события щелчка упомянутой кнопки. Каждый пример создает окно сообщения «Hello, World» после нажатия кнопки в форме.
Visual Basic 6:
Private Sub Command1_Click()
MsgBox "Hello, World"
End Sub
VB.NET (можно использовать класс MsgBox или MessageBox):
Private Sub Button1_Click(sender As object, e As EventArgs) Handles Button1.Click
MsgBox("Hello, World")
End Sub
- Оба Visual Basic 6 и Visual Basic .NET автоматически генерировать
Sub
иEnd Sub
заявления , когда соответствующая кнопка двойной щелчок в режиме конструктора. Visual Basic .NET также будет генерировать необходимыйClass
иEnd Class
заявление. Разработчику нужно только добавить оператор, чтобы отобразить окно сообщения «Hello, World». - Все вызовы процедур в VB.NET должны выполняться в круглых скобках, тогда как в Visual Basic 6 были разные соглашения для функций (скобки требуются) и подпрограмм (скобки не допускаются, если они не вызываются с использованием ключевого слова
Call
). - Имена
Command1
иButton1
не обязательны. Однако это имена по умолчанию для командной кнопки в Visual Basic 6 и VB.NET соответственно. - В VB.NET
Handles
ключевое слово используется для того, чтобы сделать подпрограммуButton1_Click
обработчикомClick
события объектаButton1
. В Visual Basic 6 подпрограммы обработчика событий должны иметь определенное имя, состоящее из имени объекта («Command1»), подчеркивания («_») и имени события («Click», следовательно, «Command1_Click»). - Существует функция , называемая
MessageBox.Show
вMicrosoft.VisualBasic
пространстве имен , которые могут быть использованы (вместоMsgBox
) аналогична соответствующей функции в Visual Basic 6. Существует споры о том, какой функции для использования в качестве лучшей практики (не ограничиваются только показывать окно сообщений , а также в отношении другие особенностиMicrosoft.VisualBasic
пространства имен). Некоторые программисты предпочитают делать что-то «.NET-способом», поскольку классы Framework имеют больше возможностей и меньше зависят от языка. Другие утверждают, что использование специфичных для языка функций делает код более читаемым (например, используяint
(C #) илиInteger
(VB.NET) вместоSystem.Int32
). - В Visual Basic 2008 включение
ByVal sender as Object, ByVal e as EventArgs
стало необязательным.
В следующем примере демонстрируется разница между Visual Basic 6 и VB.NET. Оба примера закрывают активное окно .
Visual Basic 6:
Sub cmdClose_Click()
Unload Me
End Sub
VB.NET:
Sub btnClose_Click(sender As Object, e As EventArgs) Handles btnClose.Click
Close()
End Sub
Префикс cmd заменяется префиксом btn в соответствии с ранее упомянутым новым соглашением.
В Visual Basic 6 не было общих сочетаний клавиш. Следующие варианты эквивалентны:
Visual Basic 6:
Sub Timer1_Timer()
'Reduces Form Height by one pixel per tick
Me.Height = Me.Height - 1
End Sub
VB.NET:
Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
Me.Height -= 1
End Sub
Сравнение с C #
C # и Visual Basic - первые языки Microsoft, созданные для программирования на .NET Framework (позже добавлен F # и другие; другие также добавили языки). Хотя C # и Visual Basic синтаксически различаются, на этом различия в основном заканчиваются. Microsoft разработала оба этих языка как часть одной платформы разработки .NET Framework. Оба они разрабатываются, управляются и поддерживаются одной и той же командой разработчиков языков в Microsoft. Они компилируются на один и тот же промежуточный язык (IL), который работает с одними и теми же библиотеками времени выполнения .NET Framework. Хотя есть некоторые различия в конструкциях программирования, их различия в основном синтаксические и, если предположить, что один из них избегает библиотек Visual Basic «Совместимость», предоставляемых Microsoft для облегчения преобразования из Visual Basic 6, почти каждая функция в VB имеет эквивалентную функцию в C # и наоборот. Наконец, оба языка ссылаются на одни и те же базовые классы .NET Framework для расширения своей функциональности. В результате, за некоторыми исключениями, программа, написанная на любом языке, может быть запущена через простой преобразователь синтаксиса для перевода на другой. Для этой задачи существует множество продуктов с открытым исходным кодом и коммерчески доступных продуктов.
Примеры
Привет мир!
Приложение Windows Forms
Требуется кнопка с именем Button1.
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
MsgBox("Hello world!", MsgBoxStyle.Information, "Hello world!") ' Show a message that says "Hello world!".
End Sub
End Class
Консольное приложение
Module Module1
Sub Main()
Console.WriteLine("Hello world!") ' Write in the console "Hello world!" and start a new line.
Console.ReadKey() ' The user must press any key before the application ends.
End Sub
End Module
Говорящий
Приложение Windows Forms
Требуется TextBox с названием «TextBox1» и кнопка с именем Button1.
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
CreateObject("Sapi.Spvoice").Speak(TextBox1.Text)
End Sub
End Class
Консольное приложение
Module Module1
Private Voice = CreateObject("Sapi.Spvoice")
Private Text As String
Sub Main()
Console.Write("Enter the text to speak: ") ' Say "Enter the text to speak: "
Text = Console.ReadLine() ' The user must enter the text to speak.
Voice.Speak(Text) ' Speak the text the user has entered.
End Sub
End Module
История версий
После классической версии Visual Basic 6.0 первая версия Visual Basic .NET дебютировала в 2002 году. По состоянию на 2020 год выпущено десять версий Visual Basic .NET.
2002 (VB 7.0)
Первая версия, Visual Basic .NET, основана на .NET Framework 1.0 . Самая важная функция - это управляемый код , который контрастирует с классическим Visual Basic.
2003 (VB 7.1)
Visual Basic .NET 2003 был выпущен вместе с .NET Framework 1.1 . Новые функции включают поддержку .NET Compact Framework и улучшенный мастер обновления VB . Также были улучшены производительность и надежность .NET IDE (особенно фонового компилятора ) и среды выполнения. Кроме того, Visual Basic .NET 2003 был доступен в Visual Studio.NET Academic Edition и бесплатно распространялся среди определенного числа ученых из каждой страны.
2005 (VB 8.0)
После Visual Basic .NET 2003 Microsoft исключила «.NET» из названия продукта, назвав следующую версию Visual Basic 2005.
В этом выпуске Microsoft добавила множество функций, призванных усилить нацеленность Visual Basic .NET как платформы быстрой разработки приложений и еще больше отличить ее от C # ., В том числе:
- Изменить и продолжить функцию
- Оценка выражения во время разработки
- Псевдо- пространство имен «My», которое обеспечивает:
- Легкий доступ к определенным областям .NET Framework, для доступа к которым в противном случае требуется значительный код, например использование, а не
My.Form2.Text = " MainForm "
System.WindowsApplication1.Forms.Form2.text = " MainForm "
- Динамически генерируемые классы (например, My.Forms )
- Легкий доступ к определенным областям .NET Framework, для доступа к которым в противном случае требуется значительный код, например использование, а не
- Улучшенный конвертер VB-to-VB.NET
- Ключевое слово using, упрощающее использование объектов, которым требуется шаблон Dispose для освобождения ресурсов.
- Функция Just My Code , которая скрывает (переходит) шаблонный код, написанный Visual Studio .NET IDE, и код системной библиотеки во время отладки.
- Связывание с источником данных, упрощение разработки клиент-сервер базы данных
Чтобы преодолеть разрыв между собой и другими языками .NET, в этой версии добавлены:
- Дженерики
- Частичные классы , метод определения некоторых частей класса в одном файле с последующим добавлением дополнительных определений; особенно полезно для интеграции пользовательского кода с автоматически сгенерированным кодом
- Перегрузка операторов и типы, допускающие значение NULL
- Поддержка беззнаковых целочисленных типов данных, обычно используемых в других языках.
Visual Basic 2005 представил IsNot
оператор, который делает 'If X IsNot Y'
эквивалент 'If Not X Is Y'
. Он получил известность, когда было обнаружено, что он является предметом патентной заявки Microsoft.
2008 (VB 9.0)
Visual Basic 9.0 был выпущен вместе с .NET Framework 3.5 19 ноября 2007 г.
В этом выпуске Microsoft добавила множество функций, в том числе:
- Истинный условный оператор «If (условие как логическое, truepart, falsepart)» для замены функции «IIf».
- Анонимные типы
- Поддержка LINQ
- Лямбда-выражения
- XML-литералы
- Вывод типа
- Методы расширения
2010 (VB 10.0)
В апреле 2010 года Microsoft выпустила Visual Basic 2010. Microsoft планировала использовать Dynamic Language Runtime (DLR) для этого выпуска, но перешла на стратегию совместной эволюции Visual Basic и родственного языка C #, чтобы привести оба языка в более тесное равновесие друг с другом. Врожденная способность Visual Basic динамически взаимодействовать с объектами CLR и COM была улучшена для работы с динамическими языками, построенными на DLR, такими как IronPython и IronRuby . Компилятор Visual Basic был улучшен, чтобы выводить продолжение строки в наборе общих контекстов, во многих случаях устраняя необходимость в символах продолжения строки «_». Кроме того, существующая поддержка встроенных функций была дополнена поддержкой встроенных подпрограмм, а также многострочных версий лямбда-выражений Sub и Function.
2012 (VB 11.0)
Visual Basic 2012 был выпущен вместе с .NET Framework 4.5 . Основные функции, представленные в этой версии, включают:
- Асинхронное программирование с операторами async и await
- Итераторы
- Иерархия звонков
- Информация о вызывающем абоненте
- Ключевое слово Global в операторах namespace
2013 (VB 12.0)
Visual Basic 2013 был выпущен вместе с .NET Framework 4.5.1 с Visual Studio 2013. Можно также создавать приложения .NET Framework 4.5.2, установив Developer Pack.
2015 (VB 14.0)
Visual Basic 2015 (кодовое имя VB «14.0») был выпущен вместе с Visual Studio 2015. Языковые функции включают новый знак «?». для выполнения встроенных проверок на null, а также добавлена новая функция интерполяции строк для встроенного форматирования строк.
2017 (VB 15.x)
Visual Basic 2017 (кодовое имя VB «15.0») был выпущен вместе с Visual Studio 2017. Расширяет поддержку новых языковых функций Visual Basic 15 в версии 2017, 15.3, 15.5, 15.8. Вводит новые рефакторинги, которые позволяют упорядочить исходный код одним действием.
2019 (VB 16.0)
Visual Basic 2019 (кодовое имя VB «16.0») был выпущен вместе с Visual Studio 2019. Это первая версия Visual Basic, ориентированная на .NET Core.
Кроссплатформенная разработка и разработка с открытым исходным кодом
Официальный компилятор Visual Basic написан на Visual Basic и доступен на GitHub как часть .NET Compiler Platform . Создание инструментов с открытым исходным кодом для разработки Visual Basic было медленным по сравнению с C # , хотя платформа разработки Mono предоставляет реализацию специфичных для Visual Basic библиотек и совместимого с Visual Basic 2005 компилятора, написанного на Visual Basic, а также стандартных библиотек фреймворка. например, библиотека графического интерфейса Windows Forms .
SharpDevelop и MonoDevelop - альтернативные IDE с открытым исходным кодом . Среда Gambas также похожа, но отличается от Visual Basic.
Смотрите также
- Microsoft Visual Studio Express
- Список библиотек и фреймворков .NET
- Сравнение C # и Visual Basic .NET
- Visual Basic для приложений
- Microsoft Small Basic
- Сравнение языков программирования
использованная литература
дальнейшее чтение
- «Спецификация языка Visual Basic 8.0» . Корпорация Майкрософт. 15 ноября 2005 . Проверено 10 декабря 2010 года .
- «Спецификация языка Visual Basic 9.0» . Корпорация Майкрософт. 19 декабря 2007 . Проверено 28 сентября 2011 года .
- «Спецификация языка Visual Basic 11.0» . Корпорация Майкрософт. 7 июня 2013 . Проверено 22 сентября 2013 года .