对C#中public、private、protect的区别说明

作者:James-Blackhu 时间:2021-05-30 22:11:21 

访问修饰符都知道是什么,但是在这之前没有深入的去研究和探索,每天都接触的东西应该清楚才可以。

最基础的三个访问修饰符:

public 、private、protect.在搜索过程中又看到有一种和他们放在了一起,那就是internal.接下来就四个访问修饰符做一个简答的总结和介绍。

public公有访问,不受任何限制。

private私有访问,只限于本类成员访问,子类、实例都不能访问。

protected保护访问,只限于本类和子类访问,实例不能访问。

internal内部访问,只限于本项目内访问,其他不能访问。

public人缘好,跟谁都好,protect只和熟人好,private比较自闭.不过他们是三胞胎.class是他们的爹。

例:

比如说:一个人A为父类,他的儿子B,妻子C,私生子D(注:D不在他家里),如果我们给A的事情增加修饰符:

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

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

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

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

注意事项:

1, 命名空间上不允许使用访问修饰符。命名空间没有访问限制。

2, 一个成员或类型只能有一个访问修饰符,使用 protectedinternal 组合时除外

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

4, 类中的字段默认为private

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

补充:C#中internal和protect internal的理解

internal

internal关键字是用来修饰类和类的成员的,表示该内容只能在本程序集中访问。

程序集:一般输出形式为dll或exe的文件。

例子:

如果某个程序集中,有如下的类:


namespace InternalTest
{
   internal class InternalTest1
   {
    ...
   }
   public class InternalTest2
   {
    ...
   }
}

那么在另外一个程序集中,可以访问InternalTest2,但是不能访问InternalTest2。

protect internal

protect internal 是指protect or internal是指:在同一程序集中,或派生类中可以访问。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

来源:https://blog.csdn.net/weixin_43267344/article/details/100924565

标签:C#,public,private,protect
0
投稿

猜你喜欢

  • Java开发druid数据连接池maven方式简易配置流程示例

    2021-05-26 14:57:23
  • java多线程之停止线程的方法实例代码详解

    2023-03-23 04:35:21
  • Java中反射动态 代理接口的详解及实例

    2023-11-28 05:29:36
  • C#使用伪随机数实现加密用户密码的方法

    2023-06-27 05:27:56
  • Android使用ContentProvider实现查看系统短信功能

    2023-12-16 23:55:46
  • Java多态和实现接口的类的对象赋值给接口引用的方法(推荐)

    2023-11-26 11:59:41
  • SpringBoot项目中使用Mockito的示例代码

    2023-09-25 22:31:14
  • 浅谈mybatis中的#和$的区别 以及防止sql注入的方法

    2023-03-24 10:22:28
  • java如何利用FastJSON、Gson、Jackson三种Json格式工具自定义时间序列化

    2023-04-01 07:25:00
  • java实现的日期时间转换工具类完整示例

    2022-10-08 19:05:28
  • Springboot使用redis实现接口Api限流的示例代码

    2023-11-29 02:11:05
  • C#操作DataGridView获取或设置当前单元格的内容

    2022-04-01 14:44:25
  • Java synchronized同步方法详解

    2022-06-27 02:46:37
  • Spring中的使用@Async异步调用方法

    2023-07-10 17:20:28
  • maven <repositories>标签和<pluginRepositories>标签的使用

    2022-09-26 01:06:33
  • JAVA JDK8 List分组的实现和用法

    2023-11-26 09:56:11
  • Java 全方位讲解面向对象特点与使用

    2023-07-21 18:34:06
  • 基于java的opencv开发过程详解

    2022-03-31 20:02:59
  • 一篇文章带你入门Java Script

    2023-09-12 06:09:24
  • C语言字符串另类用法的实现

    2023-06-19 02:05:25
  • asp之家 软件编程 m.aspxhome.com