Yesterday there was [this announcement from the VB-team][1].

In [a previous post][2] I wrote about the difference in namespaces between VB.Net and C#.

On a project level C# uses a default namespace setting which means you can just overwrite it at the class level.

So if you create a new class you will get something like this.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace C_Class_Library_1.NewFolder1
{
    class Class1
    {
    }
}```
But if you so desire you can change that. To this.

```csharp
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace NewFolder1
{
    class Class1
    {
    }
}```
Which means that your class is in a different namespace than all the other classes in your project. 

In VB.Net this was never possible, because they use a root namespace at the project level. Which means that all classes in your project will be under that namespace.

<div class="image_block">
  <img src="https://lessthandot.z19.web.core.windows.net/wp-content/uploads/blogs/DesktopDev/namespace2.jpg" alt="" title="" width="716" height="149" />
</div>

You can of course cheat and not set a root namespace and then set a namespace on each and every file/class.

But [in VB11 you will no longer have to do this][1]. 

You can now override the root namespace setting by using the Global keyword.

So if I do this.

```vbnet
Namespace Global.NewNamespace
    Public Class Class1
 
 
    End Class
End Namespace

Public Class Class1

End Class```
So I can now call the above classes like so.

```vbnet
Dim _class1 As New NewNamespace.Class1
Dim _class1_1 As New VB_Console.Class1```
Perhaps not the coolest feature ever but it is new. But to be honest we would have prefered having project Roslyn in this version.

 [1]: http://blogs.msdn.com/b/vbteam/archive/2011/09/27/announcement-namespace-global.aspx
 [2]: /index.php/DesktopDev/MSTech/vb-net-and-c-the-difference-in-oo-syntax-4