zoukankan      html  css  js  c++  java
  • C#中public,private,protected,internal都有什么区别?

    参考资料:
    https://www.cnblogs.com/net-sky/p/10345566.html
    《C# 7 核心编程》

    因为一直区分不清什么时候该用什么访问控制修饰符,在这里稍微把这两天从网上查到的资料总结一下。

    1. default(默认的访问修饰符):

      • 方法的默认访问修饰符为 private
      • 类 class 的默认访问修饰符为 internal,构造函数默认为 public,析构函数不能显示使用访问修饰符且默认为 private 访问修饰符,类的成员默认为private
      • 接口 interface 的成员默认访问修饰符为 public,且不能显式使用访问修饰符
      • 枚举 enum 类型成员默认为 public,且不能显式使用访问修饰符
      • 结构体 struct 成员默认private,且不能用protected修饰,因为 struct 没有“继承”特性
      • 嵌套类型默认 private,与 class、struct 的成员的默认访问类型一致
      • 命名空间下的元素的默认访问修饰符:
        • public: 同一程序集的其他任何代码或引用该程序集的其他程序集都可以访问该类型或成员(类内、程序集内、程序集外、子类中等)
        • internal: 同一程序集中的任何代码都可以访问该类型或成员,但其他程序集不可以访问。(类内、程序集内、子类中)
    2. 剩下的修饰符主要针对“继承”特性,class 与 interface 均有该特性:

      • private: 同一类和结构的代码可以访问该类型和成员,即只能在类内访问,完全私有
      • protected: 同一类和派生(继承特性)类中的代码可以访问该类型和成员,受保护
      • protected internal: 同一程序集中的任何代码或其他程序集中的任何派生类都可以访问该类型或成员,这两个修饰符组合使用很容易误导人。该访问修饰符允许在本类,派生类或者包含该类的程序集中访问,这也被用于实现继承
    3. internal 与 protected internal 区别:internal 修饰的成员在其他程序集中的派生类中无法访问

    4. 类特有的访问控制修饰符:

      • sealed:不能被继承的类
      • partial:可以声明在不同文件中的同一个类
  • 相关阅读:
    IIS无法加载字体文件(*.woff,*.svg)的解决办法
    windows server 2012 r2 安装IIS失败
    ASP.NET Core文件上传、下载与删除
    VS2015打开特定项目就崩溃
    sql server优化思路
    Asp.net Core中使用Session
    ABP之动态WebAPI
    web.xml和@WebServlet
    同一个页面 andriod和ios设备上的按钮颜色不一致
    地址中如果含有"+",发给服务器时"+"变成了空格问题解析
  • 原文地址:https://www.cnblogs.com/Kit-L/p/14806446.html
Copyright © 2011-2022 走看看