Перейти к основному содержимому

Справочник по visual-basic


Справочник-шпаргалка по visual-basic — типы, синтаксис, стандартная библиотека, типовые паттерны. Не заменяет пошаговое обучение. Учебный курс: раздел; практика — Значимые и ссылочные типы, преобразования–Лямбды, LINQ, операторы и свои коллекции.

visual-basic — это объектно-ориентированный язык программирования, разработанный Microsoft как часть платформы .NET. Он поддерживает декларативный синтаксис, упрощённую работу с графическим интерфейсом и интеграцию с Windows API, COM-объектами и другими компонентами экосистемы .NET.


Справочные таблицы​

Содержание справочника​


visual-basic — это объектно-ориентированный язык программирования, разработанный Microsoft как часть платформы .NET. Он поддерживает декларативный синтаксис, упрощённую работу с графическим интерфейсом и интеграцию с Windows API, COM-объектами и другими компонентами экосистемы .NET.

Этот справочник охватывает:

  • базовые типы данных;
  • операторы;
  • управляющие конструкции;
  • процедуры и функции;
  • классы и объекты;
  • свойства и события;
  • модули и пространства имён;
  • стандартные функции;
  • атрибуты и директивы компилятора;
  • особенности работы с WinForms и WPF (в контексте VB);
  • часто используемые значения перечислений и констант.

В примерах кода идентификаторы на латинице (count, ws, Student) — так проще копировать в IDE и искать в документации API. Кириллица в именах переменных в VB допустима, но в командных проектах почти не используется. Фрагменты помечены VB.NET или VBA/VB6, где синтаксис расходится.


1. Типы данных​

Целочисленные типы​

ТипДиапазонРазмер (байт)
SByteот -128 до 1271
Byteот 0 до 2551
Shortот -32 768 до 32 7672
UShortот 0 до 65 5352
Integerот -2 147 483 648 до 2 147 483 6474
UIntegerот 0 до 4 294 967 2954
Longот -9 223 372 036 854 775 808 до 9 223 372 036 854 775 8078
ULongот 0 до 18 446 744 073 709 551 6158

Числа с плавающей точкой​

ТипДиапазонТочностьРазмер
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 — отрицание Is
  • TypeOf … 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 — выход из цикла For
  • Exit Do — выход из цикла Do
  • Exit While — выход из цикла While
  • Exit Sub — выход из процедуры
  • Exit Function — выход из функции
  • Continue For — переход к следующей итерации For
  • Continue 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) — в Double
  • CStr(x) — в строку
  • CBool(x) — в Boolean
  • CDate(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 — порядок перехода по Tab
  • Font — шрифт
  • 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, Simple
  • SelectedIndex, SelectedItem, SelectedValue

ListBox​

  • Items.Add(item)
  • SelectedIndex
  • SelectionMode — One, MultiSimple, MultiExtended

PictureBox​

  • Image — изображение
  • SizeMode — Normal, StretchImage, AutoSize, CenterImage, Zoom

Timer​

  • Interval — в миллисекундах
  • Enabled — запуск/остановка
  • Tick — событие

Form​

  • StartPosition — Manual, CenterScreen, WindowsDefaultLocation
  • WindowState — Normal, Minimized, Maximized
  • FormBorderStyle — стиль рамки
  • 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. Как пользоваться справочником​

Справочник удобнее использовать как "быструю карту", а не как единственный учебник:

  1. Найдите нужный блок (типы, циклы, LINQ, WinForms, файлы).
  2. Возьмите минимальный пример и запустите у себя.
  3. Если контекста мало, откройте связанную главу:
  4. Зафиксируйте рабочий шаблон в своём проекте и уже от него расширяйте решение.

В подборках​

Статья входит в тематические подборки и блок "С чего начать?" на главной. Соседние шаги того же маршрута:

Справочники — Справочник по Pascal, Справочник по ассемблеру, Справочник по Lisp, Справочник по языку С, Справочник по языку Fortran, Справочник по нотации BPMN 2.0.