c#中类和成员的修饰符介绍(转)

类访问修饰符:

public

访问级别最高,公共访问没有限制。

internal

只允许在本程序集内访问,其他程序集或站点引用其所在的程序集无法访问此类。

例如程序集LibraryA写有ClassA,程序集LibraryB引用LibraryA,在LibraryB的类或方法里无法通过LibraryA调用ClassA。

 internal static class ClassA
 {
      public string Name { get; set; }
 }

成员访问修饰符:

private

访问级别最低,只能在本类中访问;在其派生类或其他类中无法访问。

 

C#中方法、类等的默认访问修饰符~

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

1.命名空间下的元素的默认访问修饰符

public : 同一程序集的其他任何代码或引用该程序集的其他程序集都可以访问该类型或成员。

internal : 同一程序集中的任何代码都可以访问该类型或成员,但其他程序集不可以访问。 

 

2.各类型中的成员的默认访问修饰符

剩下的修饰符主要是正对继承这个语言特性的,拥有继承的类型有两个类(class)和接口(interface)。public,internal同样可以用于类型成员。

private : 同一类和结构的代码可以访问该类型和成员。

protected : 同一类和派生(继承特性)类中的代码可以访问该类型和成员。

protected internal :  同一程序集中的任何代码或其他程序集中的任何派生类都可以访问该类型或成员。

 

MSDN提示 :

1.) 派生类的可访问性不能高于其基类型。换句话说,不能有从内部类 A 派生的公共类 B。如果允许这种情况,将会使 A 成为公共类,因为 A 的所有受保护的成员或内部成员都可以从派生类访问。 

2.) 成员的可访问性决不能高于其包含类型的可访问性。 

3.) 可以使用五种访问类型中的任何一种来声明类成员(包括嵌套的类和结构)。 

 

接口(interface)

接口成员访问修饰符默认为public,且不能显示使用访问修饰符。

 

类(class)

构造函数默认为public访问修饰符。

析构函数不能显示使用访问修饰符且默认为private访问修饰符。 

类的成员默认访问修饰符为private; 

 

枚举(enum)

枚举类型成员默认为public访问修饰符,且不能显示使用修饰符。

 

结构(struct) 

结构成员默认为private修饰符。 

结构成员无法声明为protected成员,因为结构不支持继承。 

 

嵌套类型

嵌套类型的默认访问修饰符为private。 和类,结构的成员默认访问类型一致

 

类型成员默认的可访问性

属于

默认的成员可访问性

该成员允许的声明的可访问性

enum

public

class

private

public

protected

internal

private

protected internal

interface

public

struct

private

public

internal

private

       

 

 

 

 

 

 

 

 

 

 

 

 

小结

  1. Class成员的默认修饰符为private

  2. class 被标记为internal仅能被当前程序集访问.

  3. Namespace默认为public修饰符,且不能添加修饰符。

  4. class可以使用public 或 internal修饰符.  不能使用修饰符 protected、private.   class默认的修饰符为internal.

  5. 类成员可使用所有修饰符,默认为 private.

  6. Protected internal修饰符约定了仅在继承类内有效.

  7. 在public 与 internal修饰符之间,public通常有更大的访问权限.

  8. 基类必须比子类有更大的修饰符访问权限,才可被子类继承.

  9. 函数返回值的修饰符要有能访问返回值的权限.

  10. sealed Class无法被子类继承.

  11. const变量,需要在声明时完成初始化,在编码阶段不能初始化.

  12. 类的const变量,可以彼此引用,但是不能形成循环引用.

  13. const变量在编译器进行初始化,故const的运算可被执行.

  14. const变量不能被标记为static.

  15. Static 变量在类首次被加载时候初始化int类型默认初始化为0,bool被初始化为False.

  16. static readonly 字段无法被赋值,static构造函数或者变量初始化时刻除外.

 

学习C#修饰符:类修饰符和成员修饰符

C#修饰符之类修饰符:public、internal、 partial、abstract、sealed、static

C#修饰符之成员修饰符:public、protected、private、internal、sealed、abstract、virtual、override、readonly、const

 

posted @ 2017-06-14 20:42  Hand&Head  阅读(827)  评论(0)    收藏  举报