企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 如何:使用全局命名空间别名(C# 编程指南) 当成员可能被同名的其他实体隐藏时,能够访问全局[命名空间](https://msdn.microsoft.com/zh-cn/library/z2kcy19k.aspx)中的成员非常有用。 例如,在下面的代码中,Console 在 [System](https://msdn.microsoft.com/zh-cn/library/system.aspx) 命名空间中解析为 TestApp.Console 而不是 **Console** 类型。 ``` 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() { // The following line causes an error. It accesses TestApp.Console, // which is a constant. //Console.WriteLine(number); } } ``` 由于类 TestApp.System 隐藏了 **System** 命名空间,因此使用 **System.Console** 仍然会导致错误: ``` // The following line causes an error. It accesses TestApp.System, // which does not have a Console.WriteLine method. System.Console.WriteLine(number); ``` 但是,可以通过使用 global::System.Console 避免这一错误,如下所示: ``` // OK global::System.Console.WriteLine(number); ``` 当左侧的标识符为 **global** 时,对右侧标识符的搜索将从全局命名空间开始。例如,下面的声明将 TestApp 作为全局空间的一个成员进行引用。 ``` class TestClass : global::TestApp ``` 显然,并不推荐创建自己的名为 System 的命名空间,您不可能遇到出现此情况的任何代码。但是,在较大的项目中,很有可能在一个窗体或其他窗体中出现命名空间重复。在这种情况下,全局命名空间限定符可保证您可以指定根命名空间。 在此示例中,命名空间 **System** 用于包括类 TestClass,因此必须使用 global::System.Console 来引用 **System.Console** 类,该类被 **System** 命名空间隐藏。而且,别名 colAlias 用于引用命名空间 **System.Collections**;因此,将使用此别名而不是命名空间来创建 [System.Collections.Hashtable](https://msdn.microsoft.com/zh-cn/library/system.collections.hashtable.aspx) 的实例。 ``` using colAlias = System.Collections; namespace System { class TestClass { static void Main() { // Searching the alias: colAlias::Hashtable test = new colAlias::Hashtable(); // Add items to the table. test.Add("A", "1"); test.Add("B", "2"); test.Add("C", "3"); foreach (string name in test.Keys) { // Searching the global namespace: global::System.Console.WriteLine(name + " " + test[name]); } } } } ``` ``` A 1 B 2 C 3 ``` ## 请参阅 [C# 编程指南](https://msdn.microsoft.com/zh-cn/library/67ef8sbd.aspx) [命名空间(C# 编程指南)](https://msdn.microsoft.com/zh-cn/library/0d941h9d.aspx) [. 运算符(C# 参考)](https://msdn.microsoft.com/zh-cn/library/6zhxzbds.aspx) [:: 运算符(C# 参考)](https://msdn.microsoft.com/zh-cn/library/htccxtad.aspx) [extern(C# 参考)](https://msdn.microsoft.com/zh-cn/library/e59b22c5.aspx)