Zhonghui

每个不曾起舞的日子,都是对生命的辜负

User Tools

Site Tools


程序:csharp:访问权限

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#独有
  • C#的访问权限修饰符写在类成员前面,不是C++那样划分区域
  • 默认的访问权限是private(和C++一样)
/var/www/DokuWikiStick/dokuwiki/data/pages/程序/csharp/访问权限.txt · Last modified: 2022/08/19 08:53 by zh