全局::在C#中代表什么?

时间:2012-02-25 10:52:14

标签: c# .net

全局::在C#中代表什么?例如

之间有什么区别
private global::System.Int32 myInt;

private int myInt;

由于

3 个答案:

答案 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