WTF is a VB.NET Module?

We still have an old VBScript app at my work and in an effort to eliminate it and replace it with something .NET we’ve started porting it to VB.NET. I won’t go into why it isn’t being completely rewritten.

Anyway, the app has a host of include files and when I started looking to move this functionality over I found that VB.NET can instantiate what are called Modules. For C# types like myself a Module is basically a static class that exists at the namespace level. It’s kinda awesome and also kinda crazy, because once you declare a function or subroutine in a module it is directly callable from anywhere in that namespace. Meaning, unless you duplicate the function/subroutine name you can just call that function/subroutine without any qualifier.

Public Module myModule
    Sub DoSomeStuff()
        Dim userName As String = InputBox("What is your name?")
        MsgBox("User name is" & userName)
    End Sub 
    ' Insert variable, property, procedure, and event declarations. 
End Module

Public Class myClass
    Public Function Start
        DoSomeStuff()
    End Function
End Class

I plan to continue to avoid VB.NET as much as possible, as I have for the last ten years since I gave up VB programming, because I find it syntactically verbose compared to C#, but this is still interesting and a nice holdover to allow one to essentially cut and paste a VBScript include into a file in VB.NET and have it work (given certain syntactic differences).

This is also a nice VBScript to VB.NET conversion page.

Update 1/29/2015: Also just to note that Visual Studio 2008 and earlier have tooling that will convert VB code into VB.NET. Later versions do not have this.

Leave a Reply

Your email address will not be published. Required fields are marked *