见过这样的修饰符,但是没有仔细考虑过,今天做一个小练习。

           先给出一个链接,别人在网上讨论的:http://wenku.baidu.com/view/4023f65abe23482fb4da4cfe.html

            1.本类中访问的情况:

            

 

       2.子类中访问的情况:(这是在同一命名空间中的,所以internal修饰的是可以访问的)

     

     3.在同一命名空间下,但是在其它的类中的访问情况:(由于是在同一命名空间,internal和protected internal的作用没什么区别)

           

 

  4.在另外的项目中,也就是命名空间不同的访问情况:

       

 

   5.还有一种情况是,在另外的命名空间中,在TestA子类中的访问情况:

                   

       由上面的几个例子可以看出,internal和protected internal主要的区别如下:

         1) 命名空间相同的时候,protected internal=internal;

         2) 命名空间不同的时候,protected internal=protected;

   也就是说protected internal用到的场合要比internal广泛。这在Jeffrey Richter的《CLR via C#》中有相关的描述:(P142 第三版)

    修饰符从限制最大(private)到限制最小(public)的排序:

      private

      protected

      internal                     成员只能由定义程序集中的方法访问

      protected internal    成员可由任何嵌套类型、任何派生类型(不管在什么程序集)或者定义程序集中的任何方法访问

      public

 

 

 

 

 

 

 

 

 

 

 

posted on 2014-03-07 11:12  水语者9  阅读(1708)  评论(3编辑  收藏  举报