这里有一个问题,我已经有一段时间了,但实际上从来没有抽出时间来问……
在Visual Studio生成的相当多的设计器文件中,一些变量以global::为前缀,谁能解释一下这是什么意思,这个前缀有什么作用,我应该在哪里使用它?
发布于 2009-07-10 07:57:21
全局名称空间限定符允许您访问全局(“空”)名称空间中的成员。
如果要调用非限定类型(例如,MyClass.DoSomething()而不是MyNamespace.MyClass.DoSomething()),则假定该类型位于当前命名空间中。那么,如何限定该类型以表明它在全局/空名称空间中?
此代码示例(控制台应用程序)应说明其行为:
using System;
namespace MyNamespace
{
public class Program
{
static void Main(string[] args)
{
MessageWriter.Write(); // writes "MyNamespace namespace"
global::MessageWriter.Write(); // writes "Global namespace"
Console.ReadLine();
}
}
// This class is in the namespace "MyNamespace"
public class MessageWriter
{
public static void Write()
{
Console.WriteLine("MyNamespace namespace");
}
}
}
// This class is in the global namespace (i.e. no specified namespace)
public class MessageWriter
{
public static void Write()
{
Console.WriteLine("Global namespace");
}
}
发布于 2009-07-10 07:54:31
前缀表示全局命名空间。下面是一个示例:
namespace Bar {
class Gnat { }
}
namespace Foo {
namespace Bar {
class Gnat { }
}
class Gnus {
Bar.Gnat a; // Foo.Bar.Gnat
global::Bar.Gnat b; // Bar.Gnat
}
}
注意成员a可能无意中引用了Foo.Bar.Gnat类。要避免这种情况,请使用global::前缀。
发布于 2009-07-10 08:34:59
在自动生成中使用global::namespace限定符,以防止通过嵌套命名空间进行类型解析时发生冲突。
https://stackoverflow.com/questions/1108236
复制相似问题