使用命名空间别名限定符
2010-06-02 11:38
190 查看
当成员可能被同名的其他实体隐藏时,能够访问全局命名空间中的成员非常有用。
例如,在下面的代码中,Console 在 System 命名空间中解析为 TestApp.Console 而不是 Console 类型。
由于类 TestApp.System 隐藏了 System 命名空间,因此使用 System.Console 仍然会导致错误:
但是,可以通过使用 global::System.Console 避免这一错误,如下所示:
当左侧的标识符为 global 时,对右侧标识符的搜索将从全局命名空间开始。例如,下面的声明将 TestApp 作为全局空间的一个成员进行引用。
显然,并不推荐创建自己的名为 System 的命名空间,您不可能遇到出现此情况的任何代码。但是,在较大的项目中,很有可能在一个窗体或其他窗体中出现命名空间重复。在这种情况下,全局命名空间限定符可保证您可以指定根命名空间。
例如,在下面的代码中,Console 在 System 命名空间中解析为 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() { // Error Accesses TestApp.Console //Console.WriteLine(number); } }
由于类 TestApp.System 隐藏了 System 命名空间,因此使用 System.Console 仍然会导致错误:
// Error Accesses TestApp.System 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 的实例。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) { // Seaching the gloabal namespace: global::System.Console.WriteLine(name + " " + test[name]); } } } }
示例输出
A 1 B 2 C 3
转自MSDN:http://msdn.microsoft.com/zh-cn/library/c3ay4x3d(VS.80).aspx
相关文章推荐
- 使用命名空间别名限定符 global::在c#中的作用
- 使用命名空间别名限定符 ::
- 命名空间及别名的使用
- C#中的global::system***命名空间别名限定符
- C#中命名空间别名的使用
- [C#2] 3-局部类型、属性访问器保护级别、命名空间别名限定符
- 使用命名空间:别名/导入
- Schema的命名空间支持---6.2.3: 为属性使用命名空间限定
- php使用命名空间:别名/导入
- .Net 2.0 新功能:命名空间别名限定符(namespace alias qualifier)
- [置顶] 看到这样的 语句colAlias::Hashtable 你别晕( 命名空间别名限定符)
- 使用命名空间:别名/导入
- C# 使用命名空间的别名
- 使用命名空间:别名/导入
- .Net 2.0 新功能:命名空间别名限定符(namespace alias qualifier)
- 看到这样的 语句colAlias::Hashtable 你别晕( 命名空间别名限定符)
- 可空修饰符/空合并运算符/命名空间别名限定符
- .Net 2.0 新功能:命名空间别名限定符(namespace alias qualifier)
- PHP基础之命名空间6——使用别名和导入
- php命名空间中别名的使用