Module
In VB.NET, a Module
is not a class
—it is a container element, but is not an object. In a Module
, all members are shared and have "Friend" accessibility.
We cannot instantiate a Module
—it serves mainly to organize code in a global, single place. It is similar to a namespace or static
class
in other languages (such as C#).
By default, the Sub
Main
is placed in a Module
called "Module1." This is where control flow begins in a VB.NET program.
Module2
we see a Sub
called Increment. This is by default "Friend." It can be easily accessed from Main
.Module Module1 Sub Main() ' Use Module2. ' ... It does not need to be created. Module2.Increment() Module2.Increment() Module2.Increment() End Sub End Module Module Module2 Dim _value As Integer Sub Increment() ' The value is shared. Console.WriteLine(_value) ' Change the value. _value += 1 End Sub End Module0 1 2
We cannot instantiate an instance of a Module
. There is no "New" Sub
on it. A Module
is not a type, but rather an organizational namespace for programs that is shared.
Module
, you will get an error. Please consider adding a class
to fix this problem.Module 'Module2' cannot be used as a type.
A Module
has many rules. For example, it cannot inherit from another module. And you cannot specify the shared keyword on any of its members (they are already shared).
Modules are common in VB.NET. But more complex data structures are not built with many modules—rather they use classes as building blocks. A module is an organizational construct.