zoukankan      html  css  js  c++  java
  • C#访问修饰符(二)--internal和protected的区别

    1. 简述 private、 protected、 public、 internal 修饰符的访问权限。
    private : 私有成员, 在类的内部才可以访问。
    protected : 保护成员,该类内部和继承类中可以访问。
    public : 公共成员,完全公开,没有访问限制。

    internal: 在同一命名空间内可以访问。

    2、区分internal和protected

    C#中 protected internal 和 internal 的区别

     
    http://kudick.blog.163.com/blog/static/1666066320091055414453/   DoDo:

    protected: 奶奶有一张银行卡,妈妈可以用,女儿也可以用,隔壁老赵不可以用(因为老赵跟奶奶没有继承关系)

    internal: 王总有一张银行卡,秘书可以用,经理可以用,王总儿子不可以用(因为银行卡属于公家财务,只能由公司内部人员【同一个程序集】使用,王总儿子虽然继承王总,但是他不是公司内部人员,所以也不能公款私用)

     

    PS: 如果各个程序集使用了相同的强命名,那么internal也可以在不同的程序集下使用,就比如上面的internal例子,

    王总有一张银行卡(而且还有一本存折【存折相当于强命名】),同时王总的儿子也有一本存折【一样的强命名】,那么王总的儿子也可以使用了,隔壁老王也有同样的存折【强命名】所以他也可以取钱!!

        private<protected/internal<public 这个很明显了。 关键是protected和internal的问题。   protected限定的是只有在继承的子类中才可以访问,可以跨程序集           internal限定的是只有在同一个程序集中才可以访问,可以跨类    所以它们是有点交叉的。 当一个CLASS是ITERNAL的时候,要求其所有的成员的限定范围不能大于internal。 所以,当一个INTERNAL的CLASS写PROTECTED的时候,就需要两个限定符了: internal   protected 这样,限定了访问范围是:本程序集、继承的子类。 因此,关系是: private<internal   protected<internal/protected<public internal和protected的具体范围大小就不能准确的界顶了。
    3、程序集:
    被编译到同一个dll或exe中的程序就是处于同一个程序集中,在不同的dll或exe文件中的程序就是处于不同的程序集中。

    .net中的程序集就是一个编译器直接生成的dll或可执行的exe文件,包含程序集清单、元数据和MSIL等。是一个或者多个类型定义及资源文件的集合体。
     
    程序集,对于C#程序员来说一定不陌生,不就是VS生成的那些exe,dll么。是的,程序集(.net中exe与dll的区别就是exe有程序接入口,即Main函数)就是.net框架下,可以被CLR加载并运行的一堆数据集(类似java中的jar包,无法脱离虚拟机自己运行)。它们和之前CC++生成的可执行程序和动态链接库有本质的区别。
     
    说了半天,程序集里到底有什么呢。作为一堆数据集,程序集的数据可以分为:类型元数据,程序元数据,IL代码,资源。

    先说下什么是元数据,元数据一般就是指描述自身的数据
     
    程序集元数据:包含程序集的版本信息,安全信息,签名等。

    类型元数据:记录了程序集将引用了哪些类,用户自定义了哪些类,字段,数据类型等一系列信息(VS的编程助手靠的就是反射获取类型元数据)。

    IL代码:MSIL,微软中间语言,微软跨语言的根基所在,所有的C#代码都编译成IL代码,保存在程序集中,在被CLR加载后,由JIT调用BCL,FTL即时编译成机器码来让CPU运行。
  • 相关阅读:
    XMind中使用快捷键自由移动主题
    【转】】win10 更新后,office2016 激活失效的的解决方法
    不能接收具有研究精神的员工,怎么发展。
    【转】一个伟大的公司必有一个伟大的产品
    【转】】审阅史上最烂的代码
    联想和华为
    用python 实现汉诺塔
    系统架构
    产品 or 项目
    【转】我们就必须承认:这个世界上,有很多问题,就是无解的
  • 原文地址:https://www.cnblogs.com/linybo/p/13947471.html
Copyright © 2011-2022 走看看