“ global :: System”有什么区别?和“系统”在.NET?

StackOverflow https://stackoverflow.com/questions/162537

我刚刚将VS 2005项目升级到VS 2008并正在检查更改。我注意到其中一个.Designer.cs文件发生了重大变化。大多数更改只是用 global :: System 替换 System 。例如,

protected override System.Data.DataTable CreateInstance()

成了

protected override global::System.Data.DataTable CreateInstance()

这里发生了什么?

有帮助吗?

解决方案

::运算符称为命名空间别名限定符。

 global::System.Data.DataTable 

与:

相同
 System.Data.DataTable

Visual Studio 2008将其添加到设计器生成的代码中,以避免在人们创建名为System的类时偶尔发生的暧昧参考问题...例如:

class TestApp
{
    // Define a new class called 'System' to cause problems.
    public class System { }

    // Define a constant called 'Console' to cause more problems.
    const int Console = 7;
    const int number = 66;

    static void Main()
    {
        // Error  Accesses TestApp.Console
        //Console.WriteLine(number);
    }
}

然而:

global::System.Console.Writeline("This works");

进一步阅读:

http://msdn.microsoft.com/ EN-US /库/ c3ay4x3d(VS.80)的.aspx

其他提示

阻止人们做此列表中的#1号。 :)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top