C#中手保护的访问


    当一个保护成员在它被声明的类的程序文字外被访问,并且当一个内部保护成员在它被声明的程序的程序文字外被访问,访问就要求通过访问发生的派生类中进行。让声明了一个保护成员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。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值