C#中的global::system***命名空间别名限定符

using 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);

}

}

由于类 TestApp.System 隐藏了

System 命名空间,因此使用

System.Console 仍然会导致错误:

// Error Accesses

TestApp.System

System.Console.WriteLine(number);

但是,可以通过使用 global::System.Console

避免这一错误,如下所示:

global::System.Console.WriteLine(number);

显然,并不推荐创建自己的名为 System

的命名空间,您不可能遇到出现此情况的任何代码。但是,在较大的项目中,很有可能在一个窗体或其他窗体中出现命名空间重复。在这种情况下,全局命名空间限定符可保证您可以指定根命名空间。

global 是 C# 2.0

中新增的关键字,理论上说,如果代码写得好的话,根本不需要用到它。

假设你现在写了一个类,名字叫 System。那么当你再在代码里写 System

的时候,编译器就不知道你是要指你写的 System 类还是系统的 System 命名空间,而 System

命名空间已经是根命名空间了,无法再通过完全限名来指定。在以前的 C# 版本中,这就是一个无法解决的问题。现在,可以通过

global::System 来表示 System

根命名空间,

而用你自己的 MyNamespace.System

来表示自己的类。

当然,这种情况不应该出现,你不应该写一个名为 System 的类。

源代码如下:(请帮忙解释一下)

[global::System.Data.Linq.Mapping.FunctionAttribute(Name="dbo.sp_Config_RoomCategory_Insert")] public int sp_Config_RoomCategory_Insert([global::System.Data.Linq.Mapping.ParameterAttribute(Name="RoomCategoryName", DbType="NVarChar(256)")] string roomCategoryName, [global::System.Data.Linq.Mapping.ParameterAttribute(Name="RoomCategoryRank", DbType="Int")] System.Nullable roomCategoryRank, [global::System.Data.Linq.Mapping.ParameterAttribute(Name="PropertyInt", DbType="Int")] System.Nullable propertyInt, [global::System.Data.Linq.Mapping.ParameterAttribute(Name="PropertyString", DbType="NVarChar(MAX)")] string propertyString, [global::System.Data.Linq.Mapping.ParameterAttribute(Name="PropertyData", DbType="VarBinary(MAX)")] System.Data.Linq.Binary propertyData) { IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), roomCategoryName, roomCategoryRank, propertyInt, propertyString, propertyData); return ((int)(result.ReturnValue)); }

这是我在其他人的博客中摘要下来的文章,但是还是对其用法不是很明确,如果哪位大侠理解它的原理,请不吝赐教!