根据自己在学习C#过程中的经验,现整理出C#中的各种访问修饰符及其用法供初学者参考,也请大家不吝赐教。
1.C#中的访问修饰符主要有5种
|
访问修饰符 |
说明 |
|
public |
公有访问。不受任何限制。 |
|
private |
私有访问。只限于本类成员访问,子类和实例都不能访问。 |
|
protected |
保护访问。只限于本类和子类访问,实例不能访问。 |
|
internal |
内部访问。只限于本项目(程序集)内访问,其他不能访问。 |
|
protected internal |
内部保护访问。只限于本项目或是本类和子类访问,其他不能访问。 |
具体见如下图示说明: 
2.命名空间(namespace)中成员的访问修饰符
能在命名空间中定义的成员有:类(class)、枚举(enum)、结构(struct)、接口(interface)、委托(delegate)。
命名空间下只能使用两种类型的访问修饰符,public和internal,如果没有显式的给出这些访问修饰符,则默认为internal。
namespace:隐式具有public类别,不能为其添加任何访问修饰符。
3.各类型(class,enum,struct,interface)中成员的访问修饰符
|
成员类型 |
成员默认修饰符 |
成员可被修饰符 |
|
class |
private |
public,private,internal,protected,protected internal |
|
struct |
private |
public,private,internal |
|
interface |
public |
none |
|
enum |
public |
none |
◆结构成员不能具有 protected 或 protected internal 可访问性,因为结构不支持继承。
◆接口成员隐式地具有 public 已声明可访问性。在接口成员声明中不允许使用访问修饰符。
◆枚举成员隐式地具有 public 已声明可访问性。在枚举成员声明中不允许使用访问修饰符。
4.非访问修饰符
C#中除访问修饰符外,还有很多非访问的修饰符:partial,abstract,sealed,static,virtual,override。
partial:部分类,可以将一个类分成几部分写在不同的文件中,最终编译时将合并成一个文件,且各个部分不能分散在不同程序集中。
abstract:抽象类,不能够创建该类的实例;修饰方法时表示该方法需要由子类来实现,如果子类没有实现该方法,那么子类同样是抽象类。含有抽象方法的类一定是抽象类。
sealed:密封类,该类不能够被继承;修饰方法时表示该方法不能被重写。
static:静态类,不能被实例化,既然不能被实例化,那么这个类也就不能够含有对象成员,即该类所有成员为静态;访问类成员时只能通过“类名.成员名”的方式访问。
virtual:修饰方法成员,表示虚方法。父类可以含有该类的实现,子类可以重写该方法。
override:表示该方法重写了父类的方法。
浙公网安备 33010602011771号