读书笔记之 -->"命名空间"

来源:互联网 发布:java获取list第一个值 编辑:程序博客网 时间:2024/06/02 13:03

   C#程序中,每提及一个“名称”,编译器就要对这个“名称”进行“决议(resolve)”;简言之,就是要让

这个“名称”可见(visible);

举例说明一下:

  Console.WriteLine("Hello ,EdgarSun!");  

  此时编译器将无法对Console这一名称进行“决议”;using指令提供了一种解决方法,如using System;

便是告诉编译器到System命名空间中查找无法决议的“名称”;另一种做法是明确(全饰名称full qualified

name)告诉编译器到何处寻找这个“名称”,System.Console.WriteLine("Hello,EdgarSun!");

  举一个简单的命名空间的例子:

  namespace N1

  {

      public class A{…}    //N1.A

  }

 namespace N2

 {

    public class A{…}      //N2.A

  }

  类A定义于各自的命名空间(namespace),现在类A对整个程序来说不再是可见的了。而如若我们在程序

中同时“开启”(曝光expose)两个命名空间,那么unqulified name A将会导致编译错误。此时必须使用

“全饰名称”,如N2.A a;

 另外,N1和N2可以相同,编译器认为我们想在原先存在的命名空间中加入新声明(declare);

 还有一种方法是使用别名(alias);

 namespace N3

{

  using  N1;

  using N2;

  using A1 = N1.A;    

  using A2 = N2.A;

  class B

   {

     A1 a1;

     A2 a2;

   }

}

再补充一点,别名(alias)仅在当前的命名空间中有效。

 

 

 

 

原创粉丝点击