我想了解为什么您可能希望使用global::
前缀。在下面的代码中,ReSharper将其识别为冗余并可以删除:
我想了解为什么您可能希望使用global::
前缀。在下面的代码中,ReSharper将其识别为冗余并可以删除:
关键字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页面有更多示例(包括上述示例)
在生成的代码中最好使用全局命名空间前缀,这是为了避免在您的命名空间中存在类似名称的类型。
如果您在自己的命名空间内创建了一个名为System.Diagnostics.DebuggerNonUserCodeAttribute
的类型,则会发现ReSharper不再建议使用global::
。 代码生成器只是想避免与您自己的类型名称冲突。