Declaration Contexts and Default Access Levels (Visual Basic)
This topic describes which Visual Basic types can be declared within which other types, and what their access levels default to if not specified.
Declaration Context Levels
The declaration context of a programming element is the region of code in which it is declared. This is often another programming element, which is then called the containing element.
The levels for declaration contexts are the following:
Namespace level — within a source file or namespace but not within a class, structure, module, or interface
Module level — within a class, structure, module, or interface but not within a procedure or block
Procedure level — within a procedure or block (such as If or For)
The following table shows the default access levels for various declared programming elements, depending on their declaration contexts.
Declared element |
Namespace level |
Module level |
Procedure level |
---|---|---|---|
Variable (Dim Statement (Visual Basic)) |
Not allowed |
Private (Public in Structure, not allowed in Interface) |
Public |
Constant (Const Statement (Visual Basic)) |
Not allowed |
Private (Public in Structure, not allowed in Interface) |
Public |
Enumeration (Enum Statement (Visual Basic)) |
Friend |
Public |
Not allowed |
Class (Class Statement (Visual Basic)) |
Friend |
Public |
Not allowed |
Structure (Structure Statement) |
Friend |
Public |
Not allowed |
Module (Module Statement) |
Friend |
Not allowed |
Not allowed |
Interface (Interface Statement (Visual Basic)) |
Friend |
Public |
Not allowed |
Procedure (Function Statement (Visual Basic), Sub Statement (Visual Basic)) |
Not allowed |
Public |
Not allowed |
External reference (Declare Statement) |
Not allowed |
Public (not allowed in Interface) |
Not allowed |
Operator (Operator Statement) |
Not allowed |
Public (not allowed in Interface or Module) |
Not allowed |
Property (Property Statement) |
Not allowed |
Public |
Not allowed |
Default property (Default (Visual Basic)) |
Not allowed |
Public (not allowed in Module) |
Not allowed |
Event (Event Statement) |
Not allowed |
Public |
Not allowed |
Delegate (Delegate Statement) |
Friend |
Public |
Not allowed |
For more information, see Access Levels in Visual Basic.