当前位置:  开发笔记 > 编程语言 > 正文

.NET中的"global :: System"和"System"有什么区别?

如何解决《.NET中的"global::System"和"System"有什么区别?》经验,为你挑选了1个好方法。

我刚刚将VS 2005项目升级到VS 2008并正在检查这些变化.我注意到其中一个.Designer.cs文件发生了重大变化.大部分的变化是简单的替代系统全球::系统.例如,

protected override System.Data.DataTable CreateInstance()

成为

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

这里发生了什么?



1> FlySwat..:

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

 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/library/c3ay4x3d(VS.80).aspx

推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有