对于C#的初学者来说(假如你没有任何编程经历的话), 声明类的修饰符是有点头痛的。
下面是一张这张能帮助你理解这一问题。
修饰符 | 类内部 | 子类 | 程序集内 | 程序集外 |
public | √ | √ | √ | √ |
protected internal | √ | √ | √ | × |
internal | √ | √ | √ | × |
pretected | √ | √ | × | × |
private | √ | × | × | × |
default | √ | × | × | × |
sealed | × | × | × | × |
partial | 在不同文件中声明同一个类 |
protected internal与internal区别在于是否处于一个程序集:
当父类和子类在同一程序集时,子类可以访问protected internal和internal的修饰的对象
当父类和子类不在同一程序集时,子类只可以访问protected internal修饰的对象
。