Visual Basic .NET - Visual Basic .NET

Visual Basic
VB.NET Logo.svg
Парадигма Мультипарадигма : структурированная , императивная , объектно-ориентированная , декларативная , универсальная , рефлексивная и управляемая событиями
Разработано Microsoft
Разработчик Microsoft
Впервые появился 2001 ; 20 лет спустя ( 2001 )
Стабильный выпуск
Версия 16.9 2019 г. / 2 марта 2021 г . ; 5 месяцев назад ( 2021-03-02 )
Печатная дисциплина Статические , сильные и слабые , безопасные и небезопасные , именительный падеж
Платформа .NET Framework , Mono , .NET
Операционные системы В основном Windows
Также на Android , BSD , iOS , Linux , macOS , Solaris и Unix
Лицензия Компилятор Roslyn : лицензия Apache 2.0
Расширения имени файла .vb
Интернет сайт документы .microsoft .com / dotnet / visual-basic /
Основные реализации
Пакет 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 предоставляет несколько операторов потока управления, идентифицируемых зарезервированными ключевыми словами. Структурированное программирование поддерживается несколькими конструкциями, включая две конструкции условного выполнения ( ... ... ... и ... ... ) и три конструкции итеративного выполнения (цикла) ( ... , ... и ). Оператор ... имеет отдельные разделы инициализации и тестирования, оба из которых должны присутствовать. (См. Примеры ниже.) Оператор перебирает каждое значение в списке. IfThenElseEnd IfSelect CaseCaseEnd SelectDoLoopForToFor EachForToFor 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 )
  • Улучшенный конвертер VB-to-VB.NET
  • Ключевое слово using, упрощающее использование объектов, которым требуется шаблон Dispose для освобождения ресурсов.
  • Функция Just My Code , которая скрывает (переходит) шаблонный код, написанный Visual Studio .NET IDE, и код системной библиотеки во время отладки.
  • Связывание с источником данных, упрощение разработки клиент-сервер базы данных

Чтобы преодолеть разрыв между собой и другими языками .NET, в этой версии добавлены:

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 добавила множество функций, в том числе:

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.

Смотрите также

использованная литература

дальнейшее чтение

  1. «Спецификация языка Visual Basic 8.0» . Корпорация Майкрософт. 15 ноября 2005 . Проверено 10 декабря 2010 года .
  2. «Спецификация языка Visual Basic 9.0» . Корпорация Майкрософт. 19 декабря 2007 . Проверено 28 сентября 2011 года .
  3. «Спецификация языка Visual Basic 11.0» . Корпорация Майкрософт. 7 июня 2013 . Проверено 22 сентября 2013 года .

внешние ссылки