VB.NET inherits a lot of stuff from the previous incarnation of VB (VB 1 to 6 inclusive) which added Module when it introduced classes to the even older Basic language. The older language was created for a procedural, console based environment where the app was in control of what the user did unlike the Windows GUI based approach where the app responded to what the user did.
C# was designed from the ground up to be an OOPs oriented, GUI based language, so it deliberately has no concept of global variables.
Static classes are one way to "get round" that since there is only ever one instance of a static variable.
Const values - and VB.NET has them as well - allow you to define values which are known at compile time and name them to make your code both more reliable, easier to modify, and easier to read. Unlike VB, C# does not require them to be declared in a static class - so you can write a class to handle DataBase access and include a
const
string that is the connection string as well as non-static code to SELECT rows from a table. (But it's a poor idea as that should be in an external data file).
In that way, it's a lot more flexible than the outdated VB Module.
Static classes are a very handy tool, but you do need to be careful as they can cause problems if they aren't used carefully. Have a read here:
Static Classes and Methods—Are They Terrible?[
^] and also here:
The Lounge - Unit tests[
^] where a problem lurked in the background for years because a he forgot to clear a buffer, making the static method stateful instead of stateless.