Visual Basic .NET
Visual Basic .NET — найсучасніша BASIC-базована мова програмування. Станом на лютий 2022 року найновішою є версія VB.NET 2022 — частина VS 2022.
Працює ця мова на базі .NET- фреймворку (працює за допомогою CLR), для роботи з яким також розроблена мова програмування C#, до 2005 року існувала J#, а починаючи з 2010 додана F#. З виходом .Net Core шаблони для VB.NET не були включені, тобто на ньому можна було писати тільки для .NET Framework, а для .Net Core тільки деякі бібліотеки, що викликало думку, що розвиток мови припинений, але з виходом .Net 5 додані усі шаблони за винятком Unity-проєктів, для яких і надалі може слугувати як мова розробки бібліотек.
VB.NET — є першою з сімейства повністю об'єктноорієнтованою мовою, у ній підтримується всі основні принципи ООП, за винятком множинного успадкування.
Частково також підтримується фреймворком Mono.
VB.NET розвивається як частина Visual Studio починаючи з 2001 року, перший офіційний реліз у 2002 (посів місце Visual Basic і відповідно версії нумеруються починаючи з числа 7)
- Visual Basic.NET (VB 7.0) — у 2002 році з Visual C# і ASP.NET.
- Visual Basic.NET 2003 (VB 7.1) — з .NET Framework 1.1.
- Visual Basic 2005 (VB 8.0) — кінець жовтня 2005 року, у складі Visual Studio 2005 (.NET 2.0), частково підтримує проєкти попередньої версії.
- Visual Basic 2005 Express — урізана безплатна версія не для комерц��йних цілей.
- Visual Basic 2008 (VB 9.0) — Visual Studio 2008 (.NET 3.5, у перших релізах — 3.0), повністю підтримує проєкти попередньої версії.
- Visual Basic 2008 Express — урізаний попередній.
- Visual Basic 2010 (VB 10.0) — Visual Studio 2010 (.NET 4.0), повністю підтримує дві попередні версії, призначена для програмування під віндовс від XP до 7.
- Visual Basic 2010 Express — урізаний попередній.
- Visual Basic 2012 (VB 11.0) — Visual Studio 2012 (.NET 4.5), призначена для Windows 8 та Windows Store (частково, без тайл-інтерфейсу та власне Windows Store, підтримується також Windows 7 і Windows Vista за умови встановлення фреймворку), повністю підтримує усі версії .NET від 1.1 тобто дозволяє програмувати для попередніх версій Windows починаючи з Windows 2000.
- Visual Basic 2012 Express — урізаний попередній (існує тільки як частина Visual Studio Express, бо Microsoft починаючи з цієї версії не випускає окремих мов у експрес-варіантах).
- Visual Basic 2013 (VB 12.0) — Visual Studio 2013 (.NET 4.5.1 та 4.5.2), призначена для Windows 8.1 та Windows Store, за системними вимогами та можливостями (при застосуванні з попередніми версіями) не відрізняється від попереднього випуску, тільки не підтримує розробку під Windows XP. Visual Studio 2013 і відповідно Visual Basic .NET має наступні Update:
- Visual Studio 2013 Update 1 — листопад 2013.
- Visual Studio 2013 Update 2 — травень 2014.
- Visual Studio 2013 Update 3 — серпень 2014.
- Visual Studio 2013 Update 4 — листопад 2014.
- Visual Basic 2015 (VB 14.0) — Visual Studio 2015 (.NET 4.6 та 4.6.1), призначена для Windows 10, але й надалі підтримує розробку для старших версій як попередня.
- Visual Studio 2013 Update 1 — листопад 2015.
- Visual Studio 2013 Update 2 — березень 2016.
- Visual Studio 2013 Update 3 — червень 2016.
- Visual Basic 2017 (VB 15.0) — Visual Studio 2017 (.NET 4.6.x та 4.7.x), призначена для Windows 10, але й надалі підтримує розробку для старших версій як попередня. Регулярно оновлюється разом з Visual Studio.
- Visual Basic 2019 (VB 16.0) — Visual Studio 2019 (.NET 4.7.x та 4.8.x), призначена для Windows 10, але й надалі підтримує розробку для старших версій як попередня. Регулярно оновлюється разом з Visual Studio.
- Visual Basic 2022 (VB 16.0) — Visual Studio 2019 (.NET Framework 4.7.x, 4.8.x та .Net 5, 6, 7), призначена для Windows 10 та 11, а також кросплатформної розробки (Windows 11, macOS, Linux, Android, iOS), але й надалі підтримує розробку для старших версій як попередня. Регулярно оновлюється разом з Visual Studio.
Починаючи з 2013 року Express замінено на Community Edition, що є повною версією з обмеженнями комерційного використання, тобто малі команди та індивідуальні розробники можуть користуватись нею безплатно.
VB — абревіатура від Visual Basic — безпосереднього предка мови та .NET — використовувана платформа. (хоча повна назва мови — Visual Basic .NET її часто називають VB.NET для диференціації від попередніх версій така ситуація, імовірно, триватиме до повного виходу з ужитку версії 6.0).
Реалізовано всі можливості CLR з деякими надбудовами (у більшості випадків це так званий синтаксичний цукор).
У зв'язку з наявністю традиційних назв типів у мові є також шість специфічних типів, що застосовуються поряд з загальновживаними, а саме:
Тип | BASIC-аналог | Опис |
---|---|---|
Int16 | Short | 16-бітне знаковане ціле число |
UInt16 | UShort | 16-бітне беззнакове ціле число |
Int32 | Integer | 32-бітне знаковане ціле число |
UInt32 | UInteger | 32-бітне беззнакове ціле число |
Int64 | Long | 64-бітне знаковане ціле число |
UIn64 | ULong | 64-бітне беззнакове ціле число |
Вважається, що ці назви зсуваються зі зміною технологій обчислення, тобто коли набудуть поширення 128-бітні процесори, усі назви посунуться, тому що вони не прив'язані до конкретної бітності, а є чвертю, половиною та повною бітностями, для системи з найвищою бітністю (на даний час - AMD64 / Intel64).
Опис статичного класу здійснюється конструкцією «Module … End Module», що створює ілюзію ніби у мові є процедури, які не належать ніякому класу, бо доступ до всіх членів такого класу (за відсутності конфліктів імен) здійснюється через загальний простір імен. Це можна проілюструвати наступними прикладами:
Module MainModule
Sub Main
Console.WriteLine(Func1)
Console.WriteLine(Func2)
End Sub
End Module
Module M1
Public Function Func1() As Integer
Return 1
End Function
End Module
Module M2
Public Function Func2() As Integer
Return 2
End Function
End Module
Функції з різних просторів імен викликаються з головного простору імен.
Module MainModule
Sub Main
Console.WriteLine(M1.Func1)
Console.WriteLine(M2.Func1)
End Sub
End Module
Module M1
Public Function Func1() As Integer
Return 1
End Function
End Module
Module M2
Public Function Func1() As Integer
Return 2
End Function
End Module
Функції вимагають вказання класу до якого належать.
Особливим також є формування текстових констант: мова не підтримує так званих esc-послідовностей, тобто для вставки у текстову константу деяких символів необхідно використовувати вбудовані константи, наприклад:
Const TextConstant = "First line" & vbCrLf & "Second line"
вставка «перенесення рядка»
Особливим є обмеження текстових констант їх обмежують символи прямі лапки " але пара прямих лапок не обмежує константу, а служить заміною символу у ній в середині, тобто константа описана виразом: "This is «„word“» inside quotes" міститиме наступне значення This is «word» inside quotes
Також мова не має ключового слова для визначення роз��ирення, тобто розширення класу пишеться наступним чином.
Public Module ListExtensions
<Runtime.CompilerServices.Extension>
Public Function CountGreaterThan(l As List(Of Integer), n As Integer) As Integer
Return l.Where(Function(i) i > n).Count
End Function
End Module
В коді такі фунції викорстовужться як звичайні члени відповідного класу, хоча насправді вони є статичними функціями де екземпляр класу є першим аргументом.
Dim L As New List(Of Integer) From {1, 2, 3, 4, 5}
Dim Greater2 = L.CountGreaterThan(2)
Найближчою (майже ідентичною) за фукціональними властивостями є C#, найподібнішою за синтаксисом - VBA.
VB.NET | C# | VBA | |
---|---|---|---|
Синтаксис | BASIC-подібний з вкрапленнями C | майже ідентичний C | BASIC-подібний |
Об'єктна парадигма | часткова (як у .NET) | часткова (як у .NET) | у зародковому стані |
Типізація | строга з широкими, подекуди «розхлябаними», можливостями неявного приведення | строга з можливостями неявного приведення | вільна з типом Variant |
Компіляція (інтерпретація) | компілятор в IL | компілятор в IL | інтерпретатор |
Специфіка C# | C++ та інші тільки як скомпільовані бібліотеки | можна включати unmanaged code (C++) | обмежено, як скомпільовані бібліотеки |
Специфіка VB.NET | спрощені конструкції доступу до системи (наприклад до CurrentCulture), широкі можливості форматування даних при виводі | широкі можливості форматування даних при виводі |
- Успадковане від предка розхлябане приведення типів по замовчуванню та пізнє зв'язування (треба вимикати, режимом Option Strict).
- Досить велика, але рідко потрібна (для забезпечення належної роботи код необхідно переписувати) бібліотека сумісності з Visual Basic, починаючи з 2010 (10.0, .NET 4.00) — відсутня.
- C-подібні конструкції, що не вписуються у синтаксис (даний недолік — умовність, до якої досить швидко звикається).
- Автоматичне визначення типу змінних з присвоюваного значення (вигідне при використанні у невеликих фрагментах коду таких, як наприклад, методи).
- Поєднання простоти та зрозумілості синтаксису з широкими можливостями .NET.
- Наявність зручних BASIC-подібних конструкцій (яких не було у попередніх мовах).
- Легка інтеграція з офісними програмами (аналогічний базовий синтаксис).
- Легкість переходу з інших мов при потребі.
Module MainModule
Sub Main
Console.WriteLine("Hello World!")
End Sub
End Module
http://msdn.microsoft.com/en-us/vbasic/default [Архівовано 11 грудня 2010 у Wayback Machine.]