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