.NET中的" global :: System"和" System"有什么区别?
时间:2020-03-06 15:01:43 来源:igfitidea点击:
我刚刚将VS 2005项目升级到VS 2008,并正在研究更改。我注意到.Designer.cs文件之一发生了重大变化。大部分更改只是将System替换为global :: 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/zh-CN/library/c3ay4x3d(VS.80).aspx
为了防止人们在此列表上排名第一。 :)