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

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

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

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是指:在同一程序集中,或派生类中可以访问。

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

(0)

相关推荐

  • C#中public变量不能被unity面板识别的解决方案

    究其根本,原因在于,能在unity面板上识别的变量,public不是唯一的条件,另外一个条件是可序列化 比如你声明了如下一个类 using System.Collections; using System.Collections.Generic; using UnityEngine; public class Wave { public GameObject prefab; public int count; public float rate; } 在另外一个类中进行声明时如下: public

  • C++中的三种继承public,protected,private详细解析

    三种访问权限 public:可以被任意实体访问 protected:只允许子类及本类的成员函数访问 private:只允许本类的成员函数访问 三种继承方式 public 继承 protect 继承 private 继承 组合结果 基类中 继承方式 子类中 public & public继承 => public public & protected继承 => protected public & private继承 = > private protected &am

  • C#使用private font改变PDF文件的字体详解

    前言 前几天做项目,需要使用未安装的字体来改变PDF的文件.以前并没有实现过类似的功能,幸运的是我在网上找到了类似的教程,并成功实现了这个功能. 下面就跟大家分享一下我是如何实现的. 1.首先我先下载了一个系统字体库中没有的字体,独立的DeeDeeFlowers.TTF字体文件,打开预览如下图: 2.我们接下来要做的是就是在一个新建的PDF文件中输入一些内容,然后把字体替换为DeeDeeFlowers.TTF. 我在他们的网站上下载了这个组件的最新Hotfix,解压后添加了.dll 文件到我的工

  • php class中public,private,protected的区别以及实例分析

    一,public,private,protected的区别public:权限是最大的,可以内部调用,实例调用等.protected: 受保护类型,用于本类和继承类调用.private: 私有类型,只有在本类中使用. 二,实例 复制代码 代码如下: <?phperror_reporting(E_ALL);class test{ public $public; private $private; protected $protected; static $instance; public  func

  • 详谈PHP中public,private,protected,abstract等关键字的用法

    PHP中常用的关键字 在PHP中包含了很多对函数和类进行限制的关键字,常用的通常有abstract,final,interface,public,protected,private,static等等,下面我们就将对这些进行分析整理各个的用法. 变量与方法的关键字public,private,protected public的权限最大,既可以让子类使用,也可以支持实例化之后的调用, protected表示的是受保护的,访问的权限是只有在子类和本类中才可以被访问到 private 表示的是私有,只能

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

    访问修饰符都知道是什么,但是在这之前没有深入的去研究和探索,每天都接触的东西应该清楚才可以. 最基础的三个访问修饰符: public .private.protect.在搜索过程中又看到有一种和他们放在了一起,那就是internal.接下来就四个访问修饰符做一个简答的总结和介绍. public公有访问,不受任何限制. private私有访问,只限于本类成员访问,子类.实例都不能访问. protected保护访问,只限于本类和子类访问,实例不能访问. internal内部访问,只限于本项目内访问,

  • Java中的private、protected、public和default的区别(详解)

    (1)对于public修饰符,它具有最大的访问权限,可以访问任何一个在CLASSPATH下的类.接口.异常等.它往往用于对外的情况,也就是对象或类对外的一种接口的形式. (2)对于protected修饰符,它主要的作用就是用来保护子类的.它的含义在于子类可以用它修饰的成员,其他的不可以,它相当于传递给子类的一种继承的东西. (3)对于default来说,有点的时候也成为friendly(友员),它是针对本包访问而设计的,任何处于本包下的类.接口.异常等,都可以相互访问,即使是父类没有用prote

  • C++中类的三种访问权限解析:private、public与protect

    目录 C++类的三种访问权限:private.public与protect 类与面向对象 三种访问权限 关于类的访问权限(控制权限)的区别 三种成员控制权限的区别 总结 C++类的三种访问权限:private.public与protect 类与面向对象 C++中可以定义一个类. 定义一个类,其实就是把一堆实体的共同特征给提取出来.这种面向对象而不是面向过程的解决问题的思想,大大提升了复杂大型软件的开发效率. 比如在游戏开发中,需要生成一批属性相近.行为相似的怪物,那我们可以定义一个怪物类: cl

  • 深入理解C++中public、protected及private用法

    初学C++的朋友经常在类中看到public,protected,private以及它们在继承中表示的一些访问范围,很容易搞糊涂.今天本文就来十分分析一下C++中public.protected及private用法.相信对于大家深入掌握C++程序设计会有很大的帮助. 这里我们首先要明白下面几点. 1.类的一个特征就是封装,public和private作用就是实现这一目的.所以: 用户代码(类外)可以访问public成员而不能访问private成员:private成员只能由类成员(类内)和友元访问.

  • JS 中的类Public,Private 和 Protected详解

    目录 前言 public private protected 前言 原文地址:dev.to/bhagatparwi… 即使 ES6 中引入了 class 关键字很好的模拟了类的行为以及使我们可以进行面向对象编程,但 JavaScript 中的类缺失了创建公共.私有和保护成员的能力. 若你之前使用过其他面向对象的编程语言,肯定知道内部和外部接口的重要性.内部接口引用的方法和属性只能在类的内部获取.相反,外部接口的方法和属性可以在内外部都可获取. 主要有三个关键字在起作用:public.protec

  • 详解Java中Vector和ArrayList的区别

    首先看这两类都实现List接口,而List接口一共有三个实现类,分别是ArrayList.Vector和LinkedList.List用于存放多个元素,能够维护元素的次序,并且允许元素的重复. 3个具体实现类的相关区别如下: 1.ArrayList是最常用的List实现类,内部是通过数组实现的,它允许对元素进行快速随机访问.数组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,就要讲已经有数组的数据复制到新的存储空间中.当从ArrayList的中间位置插入或者删除元素时,需要对

  • Java中抽象类和接口的区别_动力节点Java学院整理

    接口 1 因为java不支持多重继承,所以有了接口,一个类只能继承一个父类,但可以实现多个接口,接口本身也可以继承多个接口. 2 接口里面的成员变量默认都是public static final类型的.必须被显示的初始化. 3 接口里面的方法默认都是public abstract类型的.隐式声明. 4 接口没有构造方法,不能被实例化. 5 接口不能实现另一个接口,但可以继承多个接口. 6 类如果实现了一个接口,那么必须实现接口里面的所有抽象方法,否则类要被定义为抽象类. 抽象类 1 如果将一个类

  • 探讨PHP中this,self,parent的区别详解

    {一}PHP中this,self,parent的区别之一this篇面向对象编程(OOP,Object OrientedProgramming)现已经成为编程人员的一项基本技能.利用OOP的思想进行PHP的高级编程,对于提高PHP编程能力和规划web开发构架都是很有意义的.PHP5经过重写后,对OOP的支持额有了很大的飞跃,成为了具备了大部分面向对象语言的特性的语言,比PHP4有了很多的面向对象的特性.这里我主要谈的是this,self,parent 三个关键字之间的区别.从字面上来理解,分别是指

随机推荐