C#中手保护的访问

来源:互联网 发布:软件和信息技术服务 编辑:程序博客网 时间:2024/05/21 02:04

    当一个保护成员在它被声明的类的程序文字外被访问,并且当一个内部保护成员在它被声明的程序的程序文字外被访问,访问就要求通过访问发生的派生类中进行。让声明了一个保护成员M 的B 作为一个基类,并且让D 作为从B 派生的类。在D 的类结构体内,我们可以通过下面的某种形式来访问M:
格式M 的一个无效的类型名称和一个基本的表达式。
一个格式T.M 的基本表达式,T 是由D 或者从D 派生的类提供的。
一个格式E.M 的基本表达式,E 是由D 或者从D 派生的类提供的。
一个格式base.M 的基本表达式。
    除了这些形式的访问,一个派生类可以在构造函数初始化时访问基类的保护的构造函数 。
在这个例子中
       public class A
       {
          protected int x;
          static void F(A a, B b) {
              a.x = 1;      // Ok
              b.x = 1;      // Ok
           }
       }
       public class B: A
       {
          static void F(A a, B b) {
              a.x = 1;     // Error, must access through instance of B
              b.x = 1;      // Ok
           }
       }
     由于访问或者通过A 的实例发生或者在A 的派生类中发生,因此,在A 中可以通过A 和B 的实例来访问X 。当然,由于A 不是从B 中派生的,因此在B 中不可能通过A 的实例访问x。
原创粉丝点击