-
В этой главе представлен базовый "арсенал" VB.NET. Большая часть материала сводится к краткому обзору концепций, присущих всем языкам программирования (например, переменных и команд цикла), и описанию базовых типов данных, в основном различных чисел и строк.
-
При вводе программ VB.NET во внешнем редакторе вы не сможете воспользоваться средствами IntelliSense. Мы рекомендуем использовать IDE, поскольку технология IntelliSense значительно упрощает программирование в такой сложной среде, как .NET (конечно, для этого вам придется перейти от бесплатно распространяемого .NET SDK к Visual Studio).
-
Имена переменных в VB.NET имеют длину до 255 символов и обычно начинаются с буквы в кодировке Unicode (за дополнительной информацией о Unicode обращайтесь на сайт www.unicode.org), хотя также допускается символ подчеркивания.
-
Литералом называется последовательность символов, которая может интерпретироваться как значение одного из примитивных типов. Но с типами (даже примитивными) в VB.NET дело обстоит несколько сложнее, чем в более ранних версиях VB.
-
В VB.NET, как и в VB6, переменные объявляются в процедурах и функциях при помощи ключевых слов Dim и As, а присваивание выполняется знаком =: | Dim foo As String | foo = "bar" | Если вы не изменяли стандартную настройку VB.NET, переменные должны объявляться перед использованием (режим Option Explicit, впервые представленный в VB4, теперь используется по умолчанию).
-
По мнению многих программистов, прежние версии VB6 слишком либерально относились к преобразованию типов. В результате возникало явление "злостного искажения типов" – скажем, VB6 позволял умножить строковое представление числа на Integer.
-
Строковая переменная содержит текст в кодировке Unicode длиной до 231 (более 2 миллиардов!) символов. Как было показано выше, значения строкового типа заключаются в кавычки: | Dim message As String | message = "Help" | Конкатенация (объединение) строк обычно выполняется оператором &.
-
Все функции форматирования возвращают новую строку в заданном формате. В VB.NET сохранены аналоги старых функций форматирования из VB6 и VBScript, поэтому вы можете продолжать использовать функции Format, FormatNumber, FormatCurrency, FormatPercent и FormatDateTime.
-
В табл. 3.7 приведены условные обозначения шести базовых математических операций. | Примечание | Результат стандартного деления (/) всегда относится к типу Double, даже в случае де-ления без остатка. Результат целочисленного деления (\) всегда относится к типу Integer.
-
При обработке сложных выражений последовательность выполнения операций задается двумя способами. При использовании круглых скобок вам не придется запоминать приоритеты различных операций. В VB.NET, как и во многих языках программирования, операции обладают приоритетом, определяющим последовательность их выполнения. | Умножение обладает более высоким приоритетом, чем сложение;
-
Встроенные математические функции VB6 работают и в VB.NET, но мы предпочитаем использовать методы класса Math, входящего в .NET Framework. В этот класс также входят некоторые полезные константы (например, Math.PI и Math.Е). Основные математические функции класса Math перечислены в табл. 3.9.
-
VB.NET позволяет создавать именованные константы для значений, остающихся постоянными на протяжении всей работы программы. Константы объявляются по аналогии с переменными, а их имена подчиняются тем же правилам: до 255 символов, начинаются с буквы, после которой следует произвольная комбинация букв, цифр и символов подчеркивания. В книге имена констант записываются прописными буквами.
-
Цикл, выполняемый заданное количество раз, определяется при помощи ключевых слов For и Next.
-
Довольно часто условие продолжения цикла зависит от результатов, полученных в теле цикла. Следующая конструкция используется в VB.NET для построения цикла с неопределенным условием, тело которого выполняется минимум один раз (завершающая проверка): | Do | ' Команды VB.NET (0 и более) | Until условие_выполняется | Конечно, условие не ограничивается простой проверкой равенства.
-
В VB.NET условная команда If, как и в VB6, существует в двух версиях – однострочной и многострочной: | If X < 0 Then Console.WriteLine("Number must be positive!") | Условие конструкции If-Then может содержать логические операторы And, Or и Not.
-
В качестве альтернативы для громоздких конструкций с множеством Elself в VB.NET была сохранена команда Select Case, упрощающая принятие решений в зависимости от состояния числовой или строковой переменной. Пример: | Select Case average | Case Is > 90 | Console.WriteLine("A") | Case Is > 80 | Console.
-
Начиная с бета-версии 2 логические операторы (Not, And, Or и т. д.) работают на уровне двоичных разрядов, как и в прежних версиях VB. Допустим, у вас имеются два целых числа X и Y. Каждый бит результата X And Y равен 1 лишь в том случае, если равны 1 соответствующие биты обоих операндов;
-
Утверждение о том, что индексация массивов всегда начинается с 0, не совсем точно. Теоретически можно определять массивы с заданной верхней и нижней границей индекса, но из-за неудобного синтаксиса и снижения быстродействия вряд ли вам захочется это делать.
-
Массивы не ограничиваются одним измерением. Допустим, вы хотите сохранить таблицу умножения в матричном виде.
-
Чтобы создать новую функцию или процедуру в окне программы, установите курсор за пределами других процедур и функций и начинайте вводить заголовок процедуры или функции. Как только вы нажмете клавишу Enter, редактор IDE автоматически создаст команду End правильного типа (End Function или End Sub).
-
В отличие от функций, процедуры не возвращают конкретных значений. Вызов процедур осуществляется по имени. Непустые списки аргументов всегда заключаются в круглые скобки.
-
В VB.NET, как и в прежних версиях VB, существуют удобные средства для работы с одномерными и многомерными массивами в процедурах и функциях. Впрочем, существуют некоторые нюансы, обусловленные передачей по ссылке и по значению; мы рассмотрим их в главе 4.
-
При вызове функций и процедур с большим количеством параметров (особенно необязательных) существует такая элегантная возможность, как передача именованных аргументов. Если значения параметров при вызове передаются в виде "имя – : = значение", вам не придется беспокоиться о соблюдении порядка аргументов (регистр символов в именах игнорируется).