C#中为了数据的安全性以及代码的拓展,定了几种访问级别,根据对应的访问修饰符,可以获取Class里面对应的字段、属性、方法等。
在C#语言中,共有五种访问修饰符:public、private、protected、internal、protected internal
方法或者属性的修饰符的访问级别如下图:
访问修饰符 |
意 义 |
public |
公有访问。不受任何限制。 |
protected |
保护访问。只限于本类和子类访问。 |
internal |
内部访问。只限于本项目内访问,其他不能访问。在同一命名空间可以访问。 |
protected internal |
内部保护访问。只限于本项目或是子类访问,其他不能访问 |
private |
私有访问。只限于本类成员访问,子类,实例都不能访问。 |
C#中 protected internal 和 internal 的区别
protected: 奶奶有一张银行卡,妈妈可以用,女儿也可以用,隔壁老赵不可以用(因为老赵跟奶奶没有继承关系)
internal: 王总有一张银行卡,秘书可以用,经理可以用,王总儿子不可以用(因为银行卡属于公家财务,只能由公司内部人员【同一个程序集】使用,王总儿子虽然继承王总,但是他不是公司内部人员,所以也不能公款私用)
protected限定的是只有在继承的子类中才可以访问,可以跨程序集 internal限定的是只有在同一个程序集中才可以访问,可以跨类 所以它们是有点交叉的。 当一个CLASS是ITERNAL的时候,要求其所有的成员的限定范围不能大于internal。 所以,当一个INTERNAL的CLASS写PROTECTED的时候,就需要两个限定符了: internal protected 这样,限定了访问范围是:本程序集、继承的子类
*程序集是包含一个或多个类型定义文件和资源文件的集合。它允许我们分离可重用类型的逻辑表示和物理表示。
比如这个就是一个程序集,包含一些资源文件、托管模块(CLR头、PE32(+)头、元数据、IL代码)
(简单的说就是你将你的C#项目经过
运行编译之后形成的
dll文件和可执行文件中封装成的
程序代码集合)