我想知道为什么您可能想要使用global::
前缀。在下面的代码中,ReSharper将其标识为冗余的,并且可以删除:
发布于 2010-08-24 08:42:47
最好在生成的代码中使用全局命名空间前缀。这样做是为了避免命名空间中存在类似命名类型的情况。
如果您在名称空间中创建了一个名为System.Diagnostics.DebuggerNonUserCodeAttribute
的类型,您将注意到ReSharper不再显示不需要global::
。代码生成器只是想避免与您自己的类型名称发生任何冲突。
发布于 2010-08-24 08:42:20
关键字global::
使编译器绑定从全局名称空间开始的名称,而不是当前上下文中的名称。在给定的上下文中存在与全局成员同名的可绑定成员,并且需要全局成员时,需要使用它。
例如
class Test {
class System {}
public void Example() {
System.Console.WriteLine("here"); // Error since System binds to Test.System
global::System.Console.WriteLine("here"); // Works
}
相应的MSDN页面还有几个示例(包括上面的示例)
发布于 2014-03-10 14:34:54
“当全局上下文关键字出现在::运算符之前时,它指的是全局命名空间,这是任何C#程序的默认命名空间,否则将是未命名的。”
https://stackoverflow.com/questions/3552763
复制相似问题