请教一下public、private、static、internal、protected访问级别和使用区别?
代码的书写需要一定的规范和结构,按照一定的框架去写的,先说一下编写代码最开始的那句话是什么意思,比如
public static int[] BubbleSort(int[] list)
公共的 静态的 返回值类型 函数名(参数类型 参数名)
1,“公共的”说明这个函数可由定义它的类之外的地方访问到、调用到。
2,“静态的”说明这个函数被调用的时候,无需为定义它的类创建一个实际对像。
3,“函数名”是调用这个方法要输入的名称。
4,返回值是调用方法后得到的值,参数则是调用方法需要输入的值。
5,这里,返回值和参数值都是int[]类型,就是“整数数组”类型。
6,返回值可以赋给其他变量,这个变量名字现在我们不知道所以不会有返回值名字。但是参数作为输入,有类型int[]以外还要有个自己的名字,这里就是list,这样我们才好使用它。
最开始的那个单词public就是访问修饰符,所有类型和类型成员都具有可访问性级别,用来控制是否可以在您程序集的其他代码中或其他程序集中使用它们。 可使用一下访问修饰符指定声明类型或成员时类型或成员的可访问性。c#中的访问修饰符大概分为以下四种。
public
同一程序集中的任何其他代码或引用该程序集的其他程序集都可以访问该类型或成员。
private
只有同一类或结构中的代码可以访问该类型或成员。
protected
只有同一类或结构或者此类的派生类中的代码才可以访问的类型或成员。
internal
同一程序集中的任何代码都可以访问该类型或成员,但其他程序集中的代码不可以
举个栗子:
比如说:一个人A为父类,他的儿子B,妻子C,私生子D(注:D不在他家里)
如果我们给A的事情增加修饰符:
public事件,地球人都知道,全公开
protected事件,A,B,D知道(A和他的所有儿子知道,妻子C不知道)
private事件,只有A知道(隐私?心事?)
internal事件,A,B,C知道(A家里人都知道,私生子D不知道)
还有需要注意的是:
1,命名空间上不允许使用访问修饰符。命名空间没有访问限制。
2,一个成员或类型只能有一个访问修饰符,使用 protectedinternal 组合时除外
3,assembly中的class默认访问修饰符为internal
4,类中的字段默认为private
5,类中的方法默认为private,包括构造函数