Normally, Visual Basic does a pretty good job of resolving namespaces, so you don’t need to worry too much about the process. If you import a namespace, you can omit the namespace in any declarations that you use. If you have not imported a namespace, you can fully qualify declarations that use the namespace and you’re done. There are some in-between cases, however, that can be confusing. To understand them, you will find it helpful to know a bit more about how Visual Basic resolves namespaces.
When Visual Basic sees a reference that uses a fully qualified namespace, it looks in that namespace for the item it needs and that’s that. It either succeeds or fails. For example, the following code declares a variable of type System.Collections.Hashtable. Visual Basic looks in the System.Collections namespace and tries to find the Hashtable class. If the class is not there, the declaration fails.
Dim hash_table As New System.Collections.Hashtable
When Visual Basic encounters a qualified namespace, it first assumes that it is fully qualified. If it cannot resolve the reference as described in the previous paragraph, it tries to treat the reference as partially qualified and it looks in the current namespace for a resolution. For example, suppose you declare a variable as shown in the following code:
Dim emp As JobClasses.Employee
In this case, Visual Basic searches the current namespace for a nested namespace called JobClasses. If it finds such a namespace, it looks ...