Выражения, операторы и передача управления
В этой главе
представлен базовый «арсенал» VB .NET.
Большая часть материала сводится к
краткому обзору концепций,
присущих всем языкам
программирования (например,
переменных и команд цикла), и
описанию базовых типов данных, в
основном различных чисел и строк.
Читатели, хорошо знакомые с VB6,
могут бегло пролистать эту главу.
Лишь в
нескольких примерах этой главы
встречается реальный код, который
может использоваться в серьезных
программах VB .NET. Дело в том, что ни
одна серьезная программа VB .NET не
обходится без объектов,
построенных по шаблонам,
называемых классами, а эта тема
будет рассматриваться в главе 4. Мы
начнем с базовых конструкций языка,
потому что в противном случае нам
пришлось бы ограничиться
примитивными классами, не
обладающими никакой практической
ценностью. В этой главе не
рассматриваются классы,
определяемые пользователем, и
продемонстрированы лишь
простейшие примеры использования
встроенных классов .NET Framework,
обладающих исключительно широкими
возможностями.
Что же из этого
следует? Как ни странно — то, что
написанные в этой главе программы
весьма близки по стилю к
традиционному программированию
ранней эпохи BASIC и даже
предшествовавшей ей эпохи Fortran и COBOL
(если не считать некоторых странных,
но необходимых синтаксических
конструкций). В частности, в отличие
от программ из дальнейших глав, у
них всегда есть четко определенные
начало и конец, и управление
передается от начала к концу (хотя
управление может передаваться
специальными командами).
Как говорилось
во введении, мы постараемся
приводить программы, написанные в
нормальном стиле .NET, по возможности
избегая искусственной
совместимости с VB6.
Каждое
приложение VB .NET должно иметь точку
вто§а. В точке входа содержится
код, автоматически выполняемый при
запуске, после чего управление
передается остальному коду
программы. В относительно простых
графических приложениях точка
входа может ассоциироваться с
начальной формой, как в VB6. Но как
было показано в главе 1, код форм
Windows достаточно сложен и поиск
точки входа может вызвать
определенные затруднения. В этой
главе рассматриваются только
консольные приложения, работающие
в консольном окне (наподобие окна
сеанса DOS). Да, VB .NET позволяет легко
создавать традиционные консольные
приложения, часто применяемые при
программировании серверных
сценариев:
Точкой входа
консольного приложения является
процедура Sub Mai n модуля (аналог
процедуры Sub Mai n в VB6). Если выбрать в
диалоговом окне New Project значок
консольного приложения (Console Application),
VB .NET автоматически генерирует «скелет»
приложения с точкой входа —
процедурой Sub Main:
Module Module1
Sub Main()
End Sub
End Module
В отличие от VB6,
в первой строке задается имя модуля
(команда выделена жирным шрифтом). В
данном примере используется имя Modul
el, принятое по умолчанию. По
правилам имя модуля должно
совпадать с именем файла. Допустим,
вы изменили имя модуля в первой
строке: Module Testl При попытке
запустить консольное приложения
выводится сообщение об ошибке:
Startup code 'Sub Main' was specified in 'Test.Modulel'.
but 'Test.Modulel'
was not found
Переименование
модуля после его создания
выполняется следующим образом:
- Измените
имя модуля в окне программы.
- Измените
имя файла модуля в окне решения.
- Щелкните
правой кнопкой мыши в строке
ConsoleApplication окна решения и
выберите в контекстном меню
команду Properties.
- Убедитесь
в том, что в списке Startup object
появившегося диалогового окна
(рис. 3.1) выбрано имя модуля.
По аналогии с VB6
программа VB .NET (решение) может
состоять из нескольких модулей, но
наличие процедуры Sub Main допускается
только в одном модуле. Приложение
завершается по достижении команды
End Sub процедуры Sub Mai n. Например,
легендарная программа «Hello world»
выглядит следующим образом:
Module Modul el
Sub Main()
Console.WriteLine("Hello
world")
End Sub End Module
Если запустить
эту программу в IDE, на экране очень
быстро мелькнет (и тут же исчезнет)
окно DOS со словами «Hello world». Окно
закрывается по завершении
обработки команды End Sub.
Рис. 3.1. Диалоговое
окно свойств консольного
приложения
Если включить в
программу строку, выделенную ниже
жирным шрифтом, консольное окно
остается на экране до нажатия
клавиши Enter (чрезвычайно полезный
метод ReadLine() описан ниже).
Module Modulel
Sub Main()
Console.WriteLine("Hello world")
Console. ReadLine()
End Sub
End Module
Несмотря на простоту, эти две программы демонстрируют одну из ключевых особенностей программирования VB .NET (и вообще программирования на любом объектно-ориентированном языке): вы обращаетесь к объектам с запросом на выполнение операций. По аналогии с VB6 точка («.») используется для обращения к членам объектов и классов. Хотя обычно при вызове указывается объект (конкретный экземпляр, созданный на базе класса), в некоторых случаях вместо него указывается имя класса. В качестве примера возьмем следующую строку:
Console.WriteLine("Hellо
world")
В ней
вызывается метод Wri teLi ne класса Console,
предназначенный для вывода текста
с последующим переводом строки (в
объектно-ориентированном
программировании, как и в VB6,
функции классов обычно называются методами).
Метод WriteLine принадлежит к числу общих
(shared) методов, также называемых
методами класса. Общие методы
подробно описаны в главе4. При
вызове WriteLine выводимый текст
заключаете в кавычки и помещается в
круглые скобки. Во вторую версию
программы «Hello world» добавлен вызов
метода ReadLi ne, ожидающего нажатия
клавиши Enter (метод ReadLi ne обычно
используется в правой части
команды присваивания, чтобы
введенный с консоли текст был
сохранен в заданной переменной —
см. следующее примечание).
В
приведенных программах следует
обратить внимание на пару
неочевидных обстоятельств. Как
было сказано выше, при вызове
метода обычно указывается
конкретный экземпляр класса.
Исключение из этого правила
составляют особые методы класса,
называемые общими методами. Общие
методы существуют на уровне класса,
а не его отдельных экземпляров.
Другая тонкость заключается в том,
что Console входит в пространство имен
System, поэтому полный вызов метода
выглядит так: System.Console.Writeline("Hello
world"). В данном примере это не
нужно; причины изложены в главе 4
при более подробном описании
пространств имен.
Пользователям
предыдущих версий VB следует учесть,
что круглые скобки при вызове
методов обязательны — обычно IDE
добавляет их автоматически, но
лучше не забывать об этом. Ключевое
слово Call разрешено, но теперь в нем
нет необходимости.
При вводе
программ VB .NET во внешнем редакторе
вы не сможете воспользоваться
средствами IntelliSense. Мы рекомендуем
использовать IDE, поскольку
технология IntelliSense значительно
упрощает программирование в такой
сложной среде, как .NET (конечно, для
этого вам придется перейти от
бесплатно распространяемого .NET SDK к
Visual Studio). Редактор IDE даже
исправляет некоторые
распространенные ошибки —
например, пропуск круглых скобок
при вызове некоторых методов.
В VB .NET,
как и во всех предыдущих версиях
BASIC, не учитывается регистр
символов (кроме текста,
заключенного в кавычки). Пробелы в
строках, не заключенных в кавычки,
также игнорируются.
Тем не менее VS .NET
IDE пытается оформлять программы VB .NET
по своим правилам. Первые символы
ключевых слов преобразуются к
верхнему регистру, а строки
дополняются пробелами для удобства
чтения (End SUB преобразуется в End Sub и т.
д.). Регистр символов в именах
методов VB .NET определяется по схеме
Pascal (слова начинаются с прописных
букв, остальные буквы строчные).
Альтернативная схема выбора
регистра (writeLine) для методов VB .NET
обычно не используется.
Номера строк в
командах VB .NET практически не
используются, хотя строки
программы могут нумероваться,
причем каждая команда обычно
расположена в отдельной строке.
Чтобы продолжить команду в
следующей строке, завершите ее
символом подчеркивания (_),
отделенным одним или несколькими
пробелами. Таким образом, если
строка не завершается символом
подчеркивания, нажатие клавиши Enter
является признаком конца команды (в
Visual Basic команды не разманд можно
разместить в одной строке, разделив
их символом «:», но обычно так не
поступают. Если введенная строка не
помещается в окне, IDE прокручивает
строку вправо по мере
необходимости.
Комментарии в VB
.NET, как и в любом языке
программирования, необязательны.
Они не обрабатываются компилятором
и соответственно не занимают места
в откомпилированном коде. В VB .NET
существует два варианта оформления
комментариев. В первом, более
распространенном варианте
комментарий начинается с апострофа:
Sub Main()
Console.WriteLine("Hello
world")
'
Игнорировать значение,
возвращаемое методом ReadLine
Console. ReadLine()
End Sub
Во втором
варианте используется старое
ключевое слово Rem, которое
появилось в BASIC в начале 1960-х годов!
При включении
комментариев в конец строки проще
воспользоваться апострофом,
поскольку ключевое слово Rem
придется отделять двоеточием. В VB .NET
не предусмотрено языковых средств
для комментирования нескольких
строк, хотя на панели инструментов
присутствует кнопка, упрощающая
создание таких комментариев.
В отличие
от языка С#, обладающего
встроенными средствами построения
комментариев XML, в VB .NET документация
XML будет создаваться отдельной
надстройкой (add-in).