• c#中public,private,protected,internal的区别


    public   可以被外部成员调用 

    private   只能在被类的成员调用   
    protected   只能在被类的成员和该类的子类调用  

    internal   可以在当前项目调用  

    public: 对任何类和成员都公开, 无限制访问;
    protected: 仅仅对该类以及该类的派生类公开;
    private: 仅仅对该类公开;
    internal: 只能值包含该类的程序集中访问该类;
    protected internal: 只能在本类,派生类或者包含该类的程序集中访问.

    比如说:一个人A为父类,他的儿子B,妻子C,私生子D(注:D不在他家里)

    如果我们给A的事情增加修饰符:

    public事件,地球人都知道,全公开

    protected事件,A,B,D知道(A和他的所有儿子知道,妻子C不知道)

    private事件,只有A知道(隐私?心事?)

    internal事件,A,B,C知道(A家里人都知道,私生子D不知道)

    protected internal事件,A,B,C,D都知道,其它人不知道

    另外:

    貌似protected,internal,protected internal只能修饰嵌套类(nested class),下面代码编译错误:

    protected class C
        {
            public int Get C()
            {
                return 3;
            }
        }
    错误信息:Namespace elements cannot be explicitly declared as private, protected, or protected internal

    微软官方解释:不嵌套在其他类型中的顶级类型的可访问性只能是 internal 或 public。这些类型的默认可访问性是 internal。

    Tips:

    1,命名空间上不允许使用访问修饰符。命名空间没有访问限制。
    2,一个成员或类型只能有一个访问修饰符,使用 protectedinternal 组合时除外

    最后注意:

    1,assembly中的class默认访问修饰符为internal

    2,类中的字段默认为private

    3,类中的方法默认为private,包括构造函数

  • 相关阅读:
    伟东云学堂—几何画板学习
    京北鲤鱼----创客教育
    几何画板学习网站
    快乐的搬运工
    少儿编程网
    科技学堂 Arduino轻松学
    跟张老师学硬件arduino板
    科技学堂 Arduino传感器入门
    巧办网
    项目:git+gitlab+jenkins+ansible上线网站
  • 原文地址:https://www.cnblogs.com/muyuqianshan/p/6667385.html
Copyright © 2020-2023  润新知