Все модули в одном
При создании классов и стандартных модулей при помощи меню: Project Add New Item для каждого стандартного модуля или класса автоматически создается свой файл и свое окно кода.
Но все стандартные модули и классы можно создавать в одном-единственном окне кода и в одном файле, причем даже в окне кода и файле формы.
Например, создайте проект и запишите в окне кода формы такой текст:
Public Class Forml
Inherits System.Windows.Forms.Form
Windows Form Designer generated code
'Сюда пишем код формы
End Class
Public Class Класс
'Сюда пишем код класса
End Class
Public Module Модуль
'Сюда пишем код модуля
End Module
Public Structure Структура
'Сюда пишем код структуры
End Structure
Вы видите в окне кода 4 равноправных модуля: два класса, один стандартный модуль и одну структуру. Как видите, VB не возражает. Отныне вы можете делать так всегда, а когда модули короткие, это даже удобно. Для этого подходит окно кода не только формы, но и класса и стандартного модуля. Причем ведут себя классы и стандартные модули совершенно так, как если бы были созданы в собственных файлах и имели собственное окно кода.
Области видимости
Когда проекты состоят из нескольких модулей, встает вопрос о видимости переменных, процедур и других элементов VB из других модулей. Чтобы элемент был виден из других модулей, достаточно объявить его не словом Dim, а словом Public..
В нижеприведенном примере приведены варианты объявлений переменных, констант, процедур и функций в типичном модуле.
Public Class Classl Dim С As Integer
Public A As Integer
Private В As Integer
Const M As Integer = 3
Public Const К As Integer = 1
Private Const L As Integer = 2
Private Sub Проц()
Dim C1 As Integer
End Sub
Sub Проц1()
Const L1 As Integer = 4
End Sub
Public Function Функц() As String
Static D As Integer
Return "Привет"
End Function
End Class
Мы различаем области видимости пяти уровней (в порядке увеличения охвата):
блок внутри процедуры или функции;
процедура или функция;
модуль;
проект;
неограниченная область (элемент виден из своего и из других проектов).
Последний случай актуален тогда, когда проект во время своей работы взаимодействует с другими проектами и должен видеть некоторые их элементы.
Рассмотрим области видимости начиная с самой узкой и кончая самой широкой.
Локальные переменные и константы.
Тем, в какой области будет виден тот или иной элемент, мы можем управлять при помощи так называемых модификаторов доступа. Модификаторов доступа всего 5: Public, Private, Protected, Friend, Protected Friend.
Внутри процедур и функций переменные могут быть объявлены только при помощи слов Dim и Static, а константы - только при помощи Const. Это блочная и локальная области видимости и локальные переменные и константы. Они видны только в той процедуре, функции или блоке, в которых объявлены.
Теперь поговорим об элементах, объявленных вне процедур и функций. Это и переменные, и константы, и процедуры, и функции, и модули. Они могут быть видны или только в том модуле, где они объявлены (независимо от того, насколько глубоко он угнездился внутри других модулей), или во всем проекте, или в неограниченной области в зависимости от того, при помощи каких слов это было сделано.