有没有办法逃避VB中的根命名空间?

namespace ConsoleApplication1 { class Program { static void Main(string[] args) { System.Text.MyCustom mc = new System.Text.MyCustom(); } } } namespace System.Text { public class MyCustom { } } 

如何在VB中执行此操作,同时在应用程序中具有根命名空间,这可能吗?

更新 :根据答案,我认为没有办法做到这一点。 我向Microsoft Connect发布了一个function建议: 请投票

在VS 2012的VB.NET中,这个老问题是固定的。 从这个版本开始,您可以使用前导global转义根命名空间。 以下代码在VS 2010中是错误的,在VS 2012中是正确的:

 Imports Tools Module Module1 Sub Main() SayHello() End Sub End Module Namespace Global.Tools Module TestModule Sub SayHello() Console.Out.WriteLine("Hello") End Sub End Module End Namespace 

我认为可悲的事实是你不能。 名称空间附加到根名称空间。 文档没有提供任何转义机制的提示。 关于命名空间使用Global关键字的注意事项,但我将文本的这一部分解释为如何引用命名空间而不是如何声明命名空间。

看看这个问题: 可以覆盖VB.NET根命名空间吗? 。

最重要的是,您唯一的选择是在项目属性中保留默认命名空间为空,然后在Namespace语句中包装所有类/模块定义。

我在VB项目的Project属性中可以更改根命名空间。 默认情况下,这与项目名称相同,但您可以删除它,然后您可以在代码中充分利用命名空间结构。 缺点是您必须在需要它的代码中将项目名称指定为命名空间…

对于C#项目,Project属性中的类似设置只是Default命名空间,如果在代码中指定了namespace,则会被覆盖。 对于VB项目,它指定顶级命名空间,而不是默认….

在VB.NET中设置命名空间与在C#中声明命名空间几乎相同,只是使用VB.NET语法! 不幸的是,根命名空间始终存在,因此声明的任何新命名空间都将位于根命名空间内。

 Namespace ConsoleApplication1 Class Program Private Shared Sub Main(ByVal args As String()) Dim mc As New System.Text.MyCustom() End Sub End Class End Namespace Namespace System.Text Public Class MyCustom End Class End Namespace 

如果根命名空间是Test ,上面的代码将为您提供以下代码。

Test.ConsoleApplication1
Test.System.Text


欢呼的评论家伙,发布在记忆中!