C# 访问修饰符(知识要点归纳总结)
访问修饰符(access modifiers) 设定类和类成员的访问级别
public表示任何人都可以访问
同一程序集中的任何其他代码或引用该程序集的其他程序集都可以访问该类型或成员。
注:将一个类或类成员标志位public时,任何其他类的任何实例可以访问它。这是限制最弱的的访问修饰符。如果没有足够的理由,不要将类和类成员设置为public,否则会影响封装的效果。
private表示只有其他成员可以访问它
只有同一类或结构中的代码可以访问该类型或成员。
注:其他类和类实例不能访问。
protected对于子类表现为public,对于其他表现为private
只有同一类或结构或者此类的派生类中的代码才可以访问的类型或成员。
注:子类不能访问基类中的private的成员,而且必须用base关键字才能访问基类中的public成员。当基类成员为protected时,子类可以直接访问,而其他类和子类的实例不能访问。
internal只对同一个程序集中的其他类表示public
同一程序集中的任何代码都可以访问该类型或成员,但其他程序集中的代码不可以。
注:添加引用且using的类以及自己的代码构成一个程序集
protected internal所有成员只能在程序集内部或从一个子类访问
由其声明的程序集或另一个程序集派生的类中任何代码都可访问的类型或成员。 从另一个程序集进行访问必须在类声明中发生,该类声明派生自其中声明受保护的内部元素的类,并且必须通过派生的类类型的实例发生。
sealed表示这个类不能派生子类
sealed不是访问修饰符。只能影响继承方式,不能影响访问方式。
备注:
- 直接在命名空间下声明时,可以将接口声明为公共接口或内部接口,与类和结构一样,接口默认具有内部可访问性。 接口成员始终是公共成员,因为接口的用途是让其他类型能够访问某个类或结构。访问修饰符不能应用于接口成员。
- 枚举成员始终是公共的,不能应用任何访问修饰符。
- 委托行为类似于类和结构。 默认情况下,它们在命名空间中直接声明时具有内部访问权,在嵌套时具有私有访问权。