Справочник по visual-basic
Назначение
Справочник-шпаргалка по visual-basic — типы, синтаксис, стандартная библиотека, типовые паттерны. Не заменяет пошаговое обучение. Учебный курс: раздел; практика — Значимые и ссылочные типы, преобразования–Лямбды, LINQ, операторы и свои коллекции.
Краткое пояснение
visual-basic — это объектно-ориентированный язык программирования, разработанный Microsoft как часть платформы .NET. Он поддерживает декларативный синтаксис, упрощённую работу с графическим интерфейсом и интеграцию с Windows API, COM-объектами и другими компонентами экосистемы .NET.
Справочные таблицы
Содержание справочника
- 1. Типы данных
- 2. Операторы
- 3. Управляющие конструкции
- 4. Процедуры и функции
- 5. Классы и объекты
- 6. Модули и пространства имён
- 7. Стандартные функции и классы
- 8. WinForms: основные элементы управления
- 9. Перечисления (Enums) — часто используемые значения
- 10. Директивы компилятора
- 11. Атрибуты
- 12. Обработка исключений
- 13. Особенности visual-basic (.NET)
- 14. LINQ в visual-basic
- 15. Асинхронное программирование
- 16. Работа с коллекциями
- 17. Настройки проекта (в контексте учебного материала)
- 18. Работа с XML и JSON
- 19. Многопоточность
- 20. Сериализация
- 21. Обработка событий и делегаты
- 22. Распространённые ошибки и советы
- 23. Интеграция с другими технологиями
- 24. Отладка и диагностика
- VBA в Excel (отдельная глава)
visual-basic — это объектно-ориентированный язык программирования, разработанный Microsoft как часть платформы .NET. Он поддерживает декларативный синтаксис, упрощённую работу с графическим интерфейсом и интеграцию с Windows API, COM-объектами и другими компонентами экосистемы .NET.
Этот справочник охватывает:
- базовые типы данных;
- операторы;
- управляющие конструкции;
- процедуры и функции;
- классы и объекты;
- свойства и события;
- модули и пространства имён;
- стандартные функции;
- атрибуты и директивы компилятора;
- особенности работы с WinForms и WPF (в контексте VB);
- часто используемые значения перечислений и констант.
В примерах кода идентификаторы на латинице (count, ws, Student) — так проще копировать в IDE и искать в документации API. Кириллица в именах переменных в VB допустима, но в командных проектах почти не используется. Фрагменты помечены VB.NET или VBA/VB6, где синтаксис расходится.
1. Типы данных
Целочисленные типы
| Тип | Диапазон | Размер (байт) |
|---|---|---|
SByte | от -128 до 127 | 1 |
Byte | от 0 до 255 | 1 |
Short | от -32 768 до 32 767 | 2 |
UShort | от 0 до 65 535 | 2 |
Integer | от -2 147 483 648 до 2 147 483 647 | 4 |
UInteger | от 0 до 4 294 967 295 | 4 |
Long | от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 | 8 |
ULong | от 0 до 18 446 744 073 709 551 615 | 8 |
Числа с плавающей точкой
| Тип | Диапазон | Точность | Размер |
|---|---|---|---|
Single | ±1.5 × 10⁻⁴⁵ до ±3.4 × 10³⁸ | ~7 цифр | 4 байта |
Double | ±5.0 × 10⁻³²⁴ до ±1.7 × 10³⁰⁸ | ~15–16 цифр | 8 байт |
Decimal | ±1.0 × 10⁻²⁸ до ±7.9 × 10²⁸ | 28–29 цифр | 16 байт |
Логический тип
Boolean: принимает значенияTrueилиFalse.
Символьные и строковые типы
Char: один символ Unicode (2 байта).String: неизменяемая последовательность символов переменной длины.StringBuilder: изменяемая строка (из пространства имёнSystem.Text).
Другие типы
Date: представляет дату и время от 1 января 0001 до 31 декабря 9999.Object: универсальный тип, может содержать любой ссылочный или значимый тип.DBNull: представляет отсутствие значения в базе данных.IntPtr/UIntPtr: указатели для взаимодействия с нативным кодом.
2. Операторы
Арифметические операторы
+— сложение-— вычитание*— умножение/— деление с результатом типаDouble\— целочисленное делениеMod— остаток от деления^— возведение в степень
Операторы сравнения
=— равенство<>— неравенство<,>,<=,>=— сравнения
Логические операторы
And— логическое ИOr— логическое ИЛИXor— исключающее ИЛИNot— логическое НЕAndAlso— короткозамкнутое ИOrElse— короткозамкнутое ИЛИ
Операторы присваивания
=— присваивание значения+=,-=,*=,/=,\=,^=— составные присваивания
Операторы объединения и конкатенации
&— конкатенация строк (рекомендуется)+— также может использоваться для конкатенации, но менее надёжен
Операторы проверки типов
Is— проверка ссылочного равенстваIsNot— отрицаниеIsTypeOf … Is— проверка принадлежности к типуTryCast— безопасное приведение типаDirectCast— прямое приведение без проверкиCType— преобразование с вызовом методов преобразования
3. Управляющие конструкции
Условные операторы
If condition Then
' действия
ElseIf otherCondition Then
' другие действия
Else
' действия по умолчанию
End If
Select Case expression
Case value1
' действия
Case value2 To value3
' диапазон
Case Is > 100
' условие
Case Else
' по умолчанию
End Select
Циклы
For…Next
For i As Integer = 0 To 10 Step 2
' тело цикла
Next
For Each…Next
For Each item In collection
' обработка элемента
Next
Do…Loop
Код ITЗагрузка примера кода…
While…End While (устаревший, но поддерживается)
While condition
' тело
End While
Операторы перехода
Exit For— выход из циклаForExit Do— выход из циклаDoExit While— выход из циклаWhileExit Sub— выход из процедурыExit Function— выход из функцииContinue For— переход к следующей итерацииForContinue Do— переход к следующей итерацииDo
4. Процедуры и функции
Sub-процедуры
Sub ProcedureName(parameters)
' тело
End Sub
Параметры могут быть:
ByVal— передача по значению (по умолчанию)ByRef— передача по ссылке
Пример:
Sub Greet(ByVal name As String)
Console.WriteLine("Привет, " & name)
End Sub
Function-функции
Function FunctionName(parameters) As ReturnType
' вычисления
Return value
End Function
Пример:
Function Sum(a As Integer, b As Integer) As Integer
Return a + b
End Function
Необязательные параметры
Sub Example(Optional ByVal x As Integer = 10)
' если x не указан, используется 10
End Sub
Параметры с переменным числом аргументов
Sub PrintNames(ParamArray names() As String)
For Each name In names
Console.WriteLine(name)
Next
End Sub
5. Классы и объекты
Объявление класса
Код ITЗагрузка примера кода…
Конструкторы
Public Sub New(brand As String)
Me.Brand = brand
End Sub
Свойства
Private _speed As Integer
Public Property Speed() As Integer
Get
Return _speed
End Get
Set(value As Integer)
If value >= 0 Then
_speed = value
End If
End Set
End Property
Автоматические свойства:
Public Property Color As String
Методы
Методы — это процедуры или функции внутри класса. Они могут быть:
Public,Private,Protected,Friend,Protected Friend
События
Public Event MovementStarted()
Public Sub Move()
RaiseEvent MovementStarted()
End Sub
Подписка на событие:
AddHandler car.MovementStarted, AddressOf OnMovementStarted
Индексатор (Default)
Default Public Property Item(key As String) As String
Get
Return _store(key)
End Get
Set(value As String)
_store(key) = value
End Set
End Property
Вызов: cache("id") = "value".
Перегрузка операторов
Public Shared Operator +(a As Vector2D, b As Vector2D) As Vector2D
Return New Vector2D(a.X + b.X, a.Y + b.Y)
End Operator
Операторы объявляют Shared; типичные — +, -, =, <>, CType. Подробнее — глава 11.
6. Модули и пространства имён
Модуль
Module GlobalHelpers
Public Sub PrintHello()
Console.WriteLine("Привет из модуля!")
End Sub
End Module
Модуль — это статический класс, все члены которого автоматически статичны.
Пространство имён
Namespace MyLibrary.Transport
Public Class Train
' ...
End Class
End Namespace
Использование:
Imports MyLibrary.Transport
7. Стандартные функции и классы
Работа со строками
VB.NET (рекомендуется): методы экземпляра String — .Length, .Substring(), .Trim(), .ToUpper(), .ToLower(), .Replace(), .Contains(), .IndexOf(). Интерполяция: $"Значение: {x}".
VBA / VB6 (legacy): модуль Strings / встроенные функции — Len, Mid, Left, Right, InStr, Replace, Trim/LTrim/RTrim, UCase/LCase, StrConv. В чистом VB.NET проекте без Microsoft.VisualBasic эти имена могут быть недоступны — используйте методы String.
Преобразования типов
CInt(x)— в целоеCDbl(x)— в DoubleCStr(x)— в строкуCBool(x)— в BooleanCDate(x)— в Date
Работа с датами
Now— текущая дата и времяToday— текущая датаDateAdd(interval, number, date)— добавление интервалаDateDiff(interval, date1, date2)— разница между датамиYear(d),Month(d),Day(d)— компоненты датыWeekday(d)— день недели (1 = воскресенье по умолчанию)
Интервалы — "yyyy", "q", "m", "y", "d", "w", "ww", "h", "n", "s"
Математические функции (Math)
Math.Abs(x)Math.Sqrt(x)Math.Pow(x, y)Math.Round(x, decimals)Math.Floor(x),Math.Ceiling(x)Math.Sin(x),Math.Cos(x),Math.Tan(x)— в радианахMath.PI
Работа с файлами (My.Computer.FileSystem)
FileExists(path)ReadAllText(path)WriteAllText(path, content)CopyFile(src, dest)DeleteFile(path)DirectoryExists(path)CreateDirectory(path)
8. WinForms — основные элементы управления
Общие свойства всех контролов
Name— имя компонентаText— отображаемый текстLocation— координаты (Point)Size— размер (Size)Visible— видимостьEnabled— доступностьTabIndex— порядок перехода по TabFont— шрифтForeColor,BackColor— цвета
Button
Click— событие нажатияDialogResult— результат диалога (если кнопка в форме)
TextBox
Text— содержимоеMultiline— многострочный режимMaxLength— максимальная длинаPasswordChar— символ маскировкиReadOnly— только для чтенияScrollBars— полосы прокрутки
Label
AutoSize— автоматический размерTextAlign— выравнивание текста
CheckBox
Checked— состояниеCheckState—Checked,Unchecked,Indeterminate
RadioButton
Checked— выбран ли- Группировка через
GroupBoxили общий контейнер
ComboBox
Items— коллекция элементовDropDownStyle—DropDown,DropDownList,SimpleSelectedIndex,SelectedItem,SelectedValue
ListBox
Items.Add(item)SelectedIndexSelectionMode—One,MultiSimple,MultiExtended
PictureBox
Image— изображениеSizeMode—Normal,StretchImage,AutoSize,CenterImage,Zoom
Timer
Interval— в миллисекундахEnabled— запуск/остановкаTick— событие
Form
StartPosition—Manual,CenterScreen,WindowsDefaultLocationWindowState—Normal,Minimized,MaximizedFormBorderStyle— стиль рамкиAcceptButton,CancelButton— кнопки по умолчаниюShow(),ShowDialog(),Close()
Dim f As New Form()
f.Show()
9. Перечисления (Enums) — часто используемые значения
DialogResult
OK,Cancel,Abort,Retry,Ignore,Yes,No
MessageBoxIcon
None,Error,Question,Exclamation,Information
MessageBoxButtons
OK,OKCancel,AbortRetryIgnore,YesNoCancel,YesNo,RetryCancel
FileDialog
OpenFileDialog,SaveFileDialog- Свойства —
FileName,Filter,InitialDirectory,Title Filterпример:"Текстовые файлы (*.txt)|*.txt|Все файлы (*.*)|*.*"
10. Директивы компилятора
#Const DEBUG = True#If DEBUG Then … #End If#Region "Имя"— сворачиваемый блок кода#ExternalSource— для отладки сгенерированного кода
11. Атрибуты
<Serializable()>— разрешает сериализацию<Obsolete("Сообщение")>— помечает как устаревшее<DllImport("user32.dll")>— для вызова нативных функций<STAThread()>— для главного потока Windows Forms
12. Обработка исключений
Try
' опасный код
Catch ex As IOException
' обработка ошибки ввода-вывода
Catch ex As Exception
' общая ошибка
Finally
' всегда выполняется
End Try
13. Особенности visual-basic (.NET)
My-объекты
visual-basic предоставляет глобальный объект My, упрощающий доступ к часто используемым функциям:
My.Application— информация о приложенииMy.Computer— работа с файловой системой, сетью, портамиMy.Forms— доступ ко всем формам проекта по имениMy.Settings— хранение и загрузка пользовательских настроекMy.Resources— доступ к внедрённым ресурсам (строки, изображения)My.User— информация о текущем пользователе Windows
Пример:
My.Computer.FileSystem.WriteAllText("log.txt", "Запись", True)
Dim userName As String = My.User.Name
Late Binding (позднее связывание)
VB.NET поддерживает позднее связывание через тип Object без явного приведения:
Dim obj As Object = CreateObject("Scripting.FileSystemObject")
obj.CreateTextFile("test.txt")
Это требует включения опции Option Strict Off (по умолчанию в старых проектах).
Option-директивы
Option Explicit On/Off— обязательное объявление переменных (рекомендуетсяOn)Option Strict On/Off— строгая типизация (рекомендуетсяOnдля безопасности)Option Infer On/Off— вывод типа черезDim x = 5→x As Integer
Синтаксические удобства
- группировка обращений к одному объекту
With submitButton
.Text = "Нажми"
.Width = 100
.Enabled = True
End With
- Необязательное ключевое слово
Call: можноCall Method()или простоMethod() - Автоматическое преобразование строк в числа (при
Option Strict Off) - Поддержка XML-литералов (уникальная черта VB.NET):
Dim xml = <book>
<title>Вселенная IT</title>
</book>
Console.WriteLine(xml.<title>.Value)
14. LINQ в visual-basic
LINQ (Language Integrated Query) позволяет выполнять запросы к массивам, спискам, базам данных прямо в коде.
Синтаксис запроса
Dim numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
Dim evens = From n In numbers
Where n Mod 2 = 0
Select n
For Each n In evens
Console.WriteLine(n)
Next
Методы расширения
Dim result = numbers.Where(Function(x) x > 5).OrderBy(Function(x) x).ToArray()
Лямбды и делегаты
Dim square As Func(Of Integer, Integer) = Function(n) n * n
Dim log As Action(Of String) = Sub(msg) Console.WriteLine(msg)
Учебный разбор: глава 11.
Работа с объектами
Class Student
Public Name As String
Public Age As Integer
End Class
Dim students = {
New Student With {.Name = "Anna", .Age = 20},
New Student With {.Name = "Boris", .Age = 22}
}
Dim adultNames = From s In students
Where s.Age >= 21
Select s.Name
15. Асинхронное программирование
VB.NET поддерживает Async/Await начиная с .NET Framework 4.5.
Async Function LoadDataAsync() As Task(Of String)
Dim client As New HttpClient()
Dim content As String = Await client.GetStringAsync("https://example.com")
Return content
End Function
' Вызов
Dim data As String = Await LoadDataAsync()
Правила:
- Метод с
Awaitдолжен быть помечен какAsync - Возвращаемый тип —
Task,Task(Of T), илиSub(для обработчиков событий) - Нельзя использовать
Awaitв свойствах
16. Работа с коллекциями
Основные типы
List(Of T)— динамический массивDictionary(Of TKey, TValue)— словарь (ключ-значение)LinkedList(Of T)— вставки в середину без сдвига всего массиваHashSet(Of T)— уникальные элементы без порядкаQueue(Of T)— очередь (FIFO)Stack(Of T)— стек (LIFO)
Примеры
Dim names As New List(Of String)
names.Add("Anna")
names.RemoveAt(0)
Dim ages As New Dictionary(Of String, Integer)
ages("Anna") = 25
If ages.ContainsKey("Anna") Then
Console.WriteLine(ages("Anna"))
End If
Свой IEnumerable и For Each
Класс реализует IEnumerable(Of T) и Iterator Function … Yield — см. глава 11.
Файлы (System.IO)
Dim path = Path.Combine(AppContext.BaseDirectory, "data.txt")
File.WriteAllText(path, "text", Text.UTF8Encoding.UTF8)
Dim content = File.ReadAllText(path, Text.UTF8Encoding.UTF8)
Using reader As New StreamReader(path, Text.UTF8Encoding.UTF8)
Dim line = reader.ReadLine()
End Using
Подробнее: глава 10.
17. Настройки проекта (в контексте учебного материала)
В Visual Studio при создании проекта VB доступны следующие ключевые параметры:
Application (Приложение)
- Startup object — точка входа (
Sub Mainили форма) - Application type — Windows Forms App, Console App, Class Library
- Enable application framework — включает
My.Application, обработку исключений и т.д. - Shutdown mode — закрытие приложения при закрытии последней формы или главной формы
Compile (Компиляция)
- Option Explicit, Strict, Infer
- Target CPU — AnyCPU, x86, x64
- Optimize code — включить оптимизацию
- Treat all warnings as errors
Debug (Отладка)
- Start Action — запуск внешней программы, URL или конкретного исполняемого файла
- Command line arguments — аргументы командной строки
- Environment variables
References (Ссылки)
- Добавление сборок .NET (
System.IO,System.Net.Httpи др.) - NuGet-пакеты
- COM-объекты (через Interop)
Resources и Settings
- Resources — строки, изображения, файлы (доступ через
My.Resources) - Settings — пользовательские и прикладные настройки (доступ через
My.Settings)
18. Работа с XML и JSON
XML (через XElement и XML-литералы)
Dim catalog = <?xml version="1.0"?>
<catalog>
<product id="1">
<name>Mouse</name>
<price>990</price>
</product>
</catalog>
For Each product In catalog...<product>
Console.WriteLine(product.<name>.Value)
Next
JSON (через Newtonsoft.Json или System.Text.Json)
Установка через NuGet: Newtonsoft.Json
Imports Newtonsoft.Json
Dim json = "{""name"":""Tim"",""age"":31}"
Dim data = JsonConvert.DeserializeObject(Of Dictionary(Of String, Object))(json)
Console.WriteLine(data("name"))
19. Многопоточность
Thread
Dim thread As New Threading.Thread(Sub()
Console.WriteLine("Работа в фоне")
End Sub)
thread.Start()
ThreadPool
Threading.ThreadPool.QueueUserWorkItem(Sub(state)
Console.WriteLine("Из пула")
End Sub)
Task
Dim work = Task.Run(Sub()
' тяжёлая операция
End Sub)
Await work
20. Сериализация
BinaryFormatter (устаревший, небезопасен)
Не рекомендуется. Используйте альтернативы.
XmlSerializer
Dim serializer As New XmlSerializer(GetType(ProductList))
Using stream As New FileStream("products.xml", FileMode.Create)
serializer.Serialize(stream, productList)
End Using
JsonSerializer (System.Text.Json)
Dim json As String = JsonSerializer.Serialize(myObject)
Dim restored = JsonSerializer.Deserialize(Of MyClass)(json)
21. Обработка событий и делегаты
Func и Action (предпочтительно)
Dim predicate As Func(Of Integer, Boolean) = Function(n) n > 0
Dim action As Action(Of String) = Sub(s) Console.WriteLine(s)
Собственный делегат
Public Delegate Sub MessageDelegate(message As String)
AddressOf
AddHandler timer.Tick, AddressOf OnTick
Событие с пользовательским аргументом
Public Class DataChangedEventArgs
Inherits EventArgs
Public Property FieldName As String
End Class
Public Event DataChanged As EventHandler(Of DataChangedEventArgs)
RaiseEvent DataChanged(Me, New DataChangedEventArgs With {.FieldName = "FieldX"})
22. Распространённые ошибки и советы
- Всегда включайте
Option Strict Onв новых проектах. - Используйте
Usingдля автоматического освобождения ресурсов:
Using reader As New StreamReader("data.txt")
Dim content = reader.ReadToEnd()
End Using
- Избегайте позднего связывания в производственном коде.
- Для WinForms не изменяйте UI из фонового потока — используйте
Invoke:
If Me.InvokeRequired Then
Me.Invoke(Sub() statusLabel.Text = "Обновлено")
Else
statusLabel.Text = "Обновлено"
End If
23. Интеграция с другими технологиями
COM-объекты (например, Excel)
Dim excel = CreateObject("Excel.Application")
excel.Visible = True
Dim workbook = excel.Workbooks.Add()
Требует ссылки на Microsoft.Office.Interop.Excel. Макросы внутри книги проще писать на VBA — см. VBA в Excel.
Работа с базами данных (через ADO.NET)
Using connection As New SqlConnection("connection_string")
connection.Open()
Dim command As New SqlCommand("SELECT Name FROM Users", connection)
Dim reader = command.ExecuteReader()
While reader.Read()
Console.WriteLine(reader("Name"))
End While
End Using
24. Отладка и диагностика
- Точки останова (Breakpoints)
- Окно Immediate (
?переменная) - Логирование через
Debug.WriteLineилиTrace.WriteLine - Профилирование производительности в Visual Studio
25. Как пользоваться справочником
Справочник удобнее использовать как "быструю карту", а не как единственный учебник:
- Найдите нужный блок (типы, циклы, LINQ, WinForms, файлы).
- Возьмите минимальный пример и запустите у себя.
- Если контекста мало, откройте связанную главу:
- Управляющие конструкции и операторы visual-basic для ветвлений и циклов,
- Процедуры и события в visual-basic для процедур и событий,
- Консоль, CLI, коллекции и файлы для файлов и коллекций,
- Лямбды, LINQ, операторы и свои коллекции для лямбд и LINQ.
- Зафиксируйте рабочий шаблон в своём проекте и уже от него расширяйте решение.
В подборках
Статья входит в тематические подборки и блок "С чего начать?" на главной. Соседние шаги того же маршрута:
Справочники — Справочник по Pascal, Справочник по ассемблеру, Справочник по Lisp, Справочник по языку С, Справочник по языку Fortran, Справочник по нотации BPMN 2.0.