C#类成员的访问权限


所有类型和类型成员都具有可访问性级别。

所以类本身(不止类成员)也是有访问权限的。关于类的访问权限:
直接在命名空间中声明的类、记录和结构(即,没有嵌套在其他类或结构中的类、记录和结构)可以为public或internal。如果未指定任何访问修饰符,则默认设置为internal。我的理解:public就是可以在其他程序集使用,internal就是在本程序集内使用。在C++中,权限分为类内、子类内和类外,但是在C#中,权限又多了程序集的内外,而且这两个划分范围不是包含关系,所以多了internal这个关键字,所以,在C++中,类就是在权限分类的顶级,一个类不能说是在类内还是类外吧,所以类本身是没有访问权限的,那么在C#中,类可以分为在同个程序集中和在不同程序集中,那么类本身就有访问权限了,但是这个权限是用于控制在程序集内外的,所以是public和internal两种了。
对于嵌套的类(在类内部的类),访问权限应该是和普通类成员一样。

不是所有访问修饰符都可以在所有上下文中由所有类型或成员使用。在某些情况下,类型成员的可访问性受到其包含类型的可访问性的限制。
修饰符 可访问的范围 和C++一致
public 可见即可访问,无约束
private 只有类内部可以访问
protected 该类和其子类内部可以访问(对程序集没有限制)
internal 同个程序集内可以访问 C#独有
protected internal protected和internal的并集(要么是子类,要么是同个程序集) C#独有
private protected 和protected类似,但是限制为同个程序集内的子类 C#独有