Visual Basic имеет несколько необычных функций:
Обратная совместимость с (старыми) версиями Microsoft BASIC ( QBasic / QuickBasic ), позволяющая переносить старые программы.
Возможность использования как устаревших процедурных методов (через ветвление с помощью меток. Пример: <метка>: GOTO <метка>; и подпроцедур типа GOSUB <метка> … RETURN) , и в то же время более современные методы, такие как объектно-ориентированное программирование (с модулями классов …).
Возможность большого количества объявлений (ввод, ссылки, области …), а также гибкий синтаксис (необязательные пробелы).
Логическая константа True имеет числовое значение -1. Это связано с тем, что тип Boolean кодируется как 16-разрядное целое число со знаком. В этом представлении -1 кодируется как последовательность из 16 «двоичных единиц» (логическое значение True ), а 0 кодируется как 16 «двоичных нулей» (логическое значение False ); при выполнении нелогической операции над 16-битным целым числом со знаком, равным 0, мы получаем -1. Другими словами, True = Not False . Эта внутренняя характеристика становится особенно полезной при выполнении поразрядных логических операций над целым числом, таких как And, Или , Xor и Not . Это определение также в целом соответствует реализациям BASIC начиная с Microsoft Basic в начале 1970- х годов . Это также соответствует характеристикам микропроцессоров того периода.
Побитовые операторы и логические операторы одинаковы. Однако это не так во всех языках, производных от C (таких как Java и Perl ), которые имеют дифференцированные операторы для логических и побитовых операций. Это также традиционная особенность языка BASIC.
Переменная таблиц базы данных. Массивы объявляются указанием нижней и верхней границ, так же, как в Паскале или Фортране.. Также можно использовать инструкцию «Option Base», чтобы указать индекс нижней границы по умолчанию. Использование этого оператора может сбивать с толку при чтении кода Visual Basic, и его лучше избегать; мы предпочитаем явное объявление нижней границы таблицы. Эта нижняя граница не ограничивается только нулевым или одним значением, ее также можно указать явно при объявлении переменной. Таким образом, можно программировать как нижнюю, так и верхнюю границы. В других языках нижняя граница массивов не программируется. Эта функция отсутствует в Visual Basic .NET или VBScript . Заявление Базовый вариантбыл введен в стандарт ANSI вместе со стандартом ANSI для минимального BASIC в конце 1970- х годов . Расширение для использования формы DIM A (с 1976 по 2002 гг.) Было впервые представлено в BBC Basic , доступном в BBC micro, само по себе под влиянием COMAL (en) .
Сильная интеграция с операционной системой Windows, а также с моделью COM .
В округление банкира используется по умолчанию при преобразовании действительных чисел в целые числа.
Целые числа автоматически преобразуются в действительные числа в выражениях, где появляется нормальный оператор деления (/), так что деление нечетного целого числа на четное дает интуитивно ожидаемый результат. Существует специальный оператор для целочисленного деления (\), который обрезает результат для него.
По умолчанию, если переменная вообще не объявлена или объявлена без явной спецификации типа, она принимает тип « Вариант ». Однако это поведение можно изменить с помощью операторов DefType, таких как DefInt , DefBool , DefObj , DefStr и т. Д. В Visual Basic 6.0 есть 12 инструкций DefType . Тип по умолчанию может быть заменен в определенном объявлении, используя специальный суффикс , связанный с именем переменным ( # для Double , ! Для Покадрового , и %для целого числа , $ для строки и @ для валюты ). Также можно использовать форму As (тип) . Также можно настроить VB так, чтобы он требовал явного объявления всех переменных, используя команду Option Explicit .