I can read a lot over the Internet that VB.Net Modules are the same thing as c#.Net Static Classes. I can also read that something close to a `Static Class` is a class which would look like this:

```
'NotInheritable so that no other class can be derived from it
Public NotInheritable Class MyAlmostStaticClass

    'Private Creator so that it cannot be instantiated
    Private Sub New()
    End Sub

    'Shared Members
    Public Shared Function MyStaticFunction() as String
        Return "Something"
    End Function

End Class

```

I find this code heavy to draft, and to read. I would be much more confortable just using a `Module` like this:

```
Public Module MyEquivalentStaticClass
    Public Function MyStaticFunction() as String
        Return "Something"
    End Function
End Module

```

However, with a `Module` you loose one level of `Namespace` hierarchy, and the following 3 statements are equal:

```
'Call through the Class Name is compulsory
Dim MyVar as String = Global.MyProject.MyAlmostStaticClass.MyStaticFunction()

'Call through the Module Name is OPTIONAL
Dim MyVar as String = Global.MyProject.MyEquivalentStaticClass.MyStaticFunction()
Dim MyVar as String = Global.MyProject.MyStaticFunction()

```

I find this very inconvenient and this either pollutes the Intelisense, or forces me to create additionnal levels of `Namespace`, which then means more `Module` declaration, i.e., more Intelisense pollution.

Is there a workaround or is this the price to pay if you want to avoid the heavy SharedMembers-NotInheritable-PrivateNew `Class` declaration?

Additionnal references include the very good post by Cody Gray: <https://stackoverflow.com/a/39256196/10794555>