显式引用C#中没有命名空间的类

Joe*_*Fan 28 .net c# namespaces

我正在使用的代码有一个名为Environment的类,它不在任何名称空间中.不幸的是,如果我在一个导入System命名空间的类中,则无法引用名为Environment的自定义类.我知道这是一个不幸的选择,应该重构,但是有什么方法可以明确地引用冲突的类吗?

在C++中,似乎这样做的方法是使用::,而在Java中有一些叫做global :: 如何在C#中实现呢?

Ode*_*ded 40

C#还有一个全局(或未命名)命名空间 - 您可以使用它global::来访问您的类:

global::Environment 
Run Code Online (Sandbox Code Playgroud)

MSDN上查看更多信息.另见::操作员.

您也可以为它创建别名:

using myEnv = global::Environment;
using sysEnv = System.Environment;
Run Code Online (Sandbox Code Playgroud)

  • @Andrey - 该示例显示了如何_explicitly_引用没有命名空间的`Environment`类. (6认同)
  • 如果您最终遇到两个引用的DLL在同一名称空间中具有相同类型名称的不幸情况,您也可以使用类似的技巧.你说"extern alias FOO;" 然后你可以使用"FOO :: Blah.Bar"来表示"出现在foo.dll中的Blah.Bar".你只需要记得在命令行上说/r:FOO = foo.dll. (2认同)