private
(私有的),
protected
(受保护的),
internal
(程序集内部的),
public
(公开的),以及
protectde internal
(只有本程序内或者继承于该类的类型可以访问)。
namespace
(命名空间),
class
(类),
struct
(结构),
enum
(枚举),
interface
(接口),
delegate
(委托),
function
(函数),变量。
public
:namespace
和enum
成员、interface
的成员隐式的具有public
修饰符.不能再显式添加其修饰符。private
:class
或struct
中能被访问,class
或struct
中的成员如果不加修饰符则默认是private
。protected
:class
或继承的class
。比如在一个class Student
中声明一个函数protected int Add(){ };
在则只能在Student
中用Add
,或者在继承于Student
的子类中用base.Add()
来用num。但实例化class
得到的对象不能用Add
。比如Student s = new Student(); s.Add();
这样是错误的。(注意:声明class
、struct
前是不能加protected
修饰的,只能用public
或internal
。)internal
:class
或struct
、interface
如果不加修饰符则默认是internal
,但也可以显示声明为internal
或public
(注:如果class
、struct
是在一个class
中声明的也可以protected
、private
修饰,也就是说一个class
中还可以嵌套的声明一个class
)protected internal
:protected
和internal
两个权限累加到一起了。(注意,由于struct
是不能继承的,所以它的成员也不能由protected
或protected internal
修饰)class
可访问性不能比基类更高。也就是说如果基类被internal
修饰则子类只能用internal
修饰。如果基类都public
修饰子类可用internal
也可用public
。除了权限修饰符外还有四个修饰符sealed
、abstract
、virtual
、partial
(这四个修饰符可以和上面五个权限修饰符一起用,写在权限修饰符前面或后面都行):
sealed
:密封。sealed
使其密封,那么此方法无法再被重写。abstract
:抽象。可用来修饰class
和class
中的成员。但必须是class
被abstract
修饰了,成员才能被abstract
修饰。它表示此class
是抽象类,不能实例化,必须被继承并重写抽象函数。virtual
只能用来修饰class
中的函数,表明是虚函数,虚函数除了可以被重写外其他时候跟一般函数一样。虚函数重不重写是可选的,不是必须的。partial
:分部。通过使用关键字partial
可以把一个class
分开来写,可以在一个project中的不同文件中。在一个class
特别大,由几个人合作写时这功能特别有用。private
类型,不能使用public
访问修饰符,不可有返回值。