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

Справочник по 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 — состояние
  • CheckStateChecked, Unchecked, Indeterminate

RadioButton

  • Checked — выбран ли
  • Группировка через GroupBox или общий контейнер

ComboBox

  • Items — коллекция элементов
  • DropDownStyleDropDown, DropDownList, Simple
  • SelectedIndex, SelectedItem, SelectedValue

ListBox

  • Items.Add(item)
  • SelectedIndex
  • SelectionModeOne, MultiSimple, MultiExtended

PictureBox

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

Timer

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

Form

  • StartPositionManual, CenterScreen, WindowsDefaultLocation
  • WindowStateNormal, 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 = 5x 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.