全局::在C#中代表什么?例如
之间有什么区别private global::System.Int32 myInt;
和
private int myInt;
由于
答案 0 :(得分:16)
它是“全局”命名空间 - 它强制编译器在不考虑其他使用指令的情况下查找名称。例如,假设你有:
public class Bar{}
namespace Foo
{
public class Bar {}
public class Test
{
static void Main()
{
Bar bar1 = null; // Refers to Foo.Bar
global::Bar bar2 = null; // Refers to the "top level" Bar
}
}
}
基本上,这是一种避免命名冲突的方法 - 您最有可能在工具生成的代码中看到它,该工具不一定知道系统中的所有其他类型。在手动编写的代码中很少需要它。
有关详细信息,请参阅MSDN上的"How to: Use the global namespace alias"以及::
namespace qualifier。
答案 1 :(得分:5)
它是全局命名空间别名。
如果在代码库中声明了一个名为System.Int32
的类型,则可以使用此别名来区分内置的.NET。
// your code
namespace System
{
public class Int32
{
}
}
// You could reference the BCL System.Int32 like this:
global::System.Int32 bclInt;
System.Int32 myInt;
请参阅MSDN上的How to: Use the Global Namespace Alias (C# Programming Guide)。
答案 2 :(得分:2)
它用于引用全局命名空间。如果您在其他地方已经存在的命名空间中编写代码,这将非常有用。
有关详细信息,请参阅此处:http://msdn.microsoft.com/en-us/library/c3ay4x3d.aspx