«Все модули в одном»
До сих пор мы создавали классы и стандартные модули при помощи меню: Project ® Add New Item. При этом для каждого стандартного модуля или класса автоматически создавались свой файл и свое окно кода. Оказывается, все стандартные модули и классы можно создавать в одном-единственном окне кода и в одном файле, причем даже в окне кода и файле формы. Например, создайте проект. Запишите в окне кода формы такой текст:
Public Class Form1
Inherits System.Windows.Forms.Form
Windows Form Designer generated code
'Сюда пишем код формы
End Class
Public Class Класс
'Сюда пишем код класса
End Class
Public Module Модуль
'Сюда пишем код модуля
End Module
Public Structure Структура
'Сюда пишем код структуры
End Structure
Впервые мы пишем что-то не внутри класса формы, а ниже. Вы видите в окне кода четыре равноправных модуля: два класса, один стандартный модуль и одну структуру. Как видите, VB не возражает. Отныне вы можете делать так всегда, а когда модули короткие, это даже удобно. Для этого подходит окно кода не только формы, но и класса, и стандартного модуля. Причем ведут себя классы и стандартные модули совершенно так, как если бы были созданы в собственных файлах и имели собственное окно кода.
Теперь о структуре. Раньше она была для нас только вместилищем разнотипных данных. Оказывается, она может включать в себя и процедуры, и функции, и все другие элементы, вхожие в класс и стандартный модуль. Раньше мы писали ее только внутри других модулей. Оказывается (и теперь мы видим, что это только справедливо), ее можно писать в окне кода не внутри, а рядом с другими модулями. На том, какая от этого выгода, мы не будем останавливаться.
Теперь мы будем называть модулем не только то, что в проекте имеет свой файл и окно кода, а просто класс, стандартный модуль и структуру, где бы они не были записаны. Ну и форму, конечно, мы тоже будем называть модулем.
О строении кода в проекте. Структуру, как мы знаем, можно писать и внутри модулей. То же самое относится и к классу. Структуру и класс можно писать внутри любых модулей, а именно, классов, стандартных модулей и структур. А вот стандартный модуль нельзя писать внутри других модулей.
Имейте также в виду, что внутрь любого модуля могут входить процедуры и функции, а вот внутрь процедур и функций никакому модулю входить нельзя.
На том, почему одним можно, а другим нельзя, я не буду останавливаться. Всю эту экзотическую пока для вас информацию я дал не для того, чтобы вы пускались тут же вставлять классы в структуры и наоборот, а для того, чтобы лучше поняли материал следующего раздела. Более точно о строении кода в проекте вы узнаете в 27.1.