public:公有访问。不受任何限制。

private:私有访问。只限于本类成员访问,子类和实例都不能访问。

protected:保护访问。只限于本类和子类访问,实例不能访问。

internal:内部访问。只限于本项目(程序集)内访问,其他不能访问。

protected internal :内部保护访问。只限于本项目或是本类和子类访问,其他不

能访问

1、类(class)
    默认的修饰符:private    
    可以被修饰的:public,private,internal,protected,protected internal

2、枚举(enum)
    默认的修饰符:private
    可以被修饰的:public,private,internal

3、结构(struct)
    默认的修饰符:public

4、接口(interface)
    默认的修饰符:public

只能用在方法或变量的修饰符

(1) const:指定无法修改字段或局部变量的值。

用于修改字段或局部变量的声明。它指定字段或局部变量的值是常数,不能被修改。

(2) new:从基类成员隐藏继承的成员。

在用作修饰符时,new关键字可以显式隐藏从基类继承的成员。隐藏继承的成员意味着该成 员的派生版本将替换基类版本。在不使用 new修饰符的情况下隐藏成员是允许的,但会生成警告。使用 new显式隐藏成员会取消此警告,并记录代之以派生版本这一事实。

若要隐藏继承的成员,请使用相同名称在派生类中声明该成员,并使用 new修饰符修饰该成员。

对同一成员同时使用 new和override是错误的,因为这两个修饰符在含义上相互排斥。使用 new会用同样的名称创建一个新成员并使原始成员变为隐藏的,而 override则扩展继承成员的实现。

(3) virtual:在派生类中声明其实现可由重写成员更改的方法或访问器。

用于修饰方法、属性、索引器或事件声明,并且允许在派生类中重写这些对象。

调用虚方法时,将为重写成员检查该对象的运行时类型。将调用大部分派生类中的该重写成员,如果没有派生类重写该成员,则它可能是原始成员。

默认情况下,方法是非虚拟的。不能重写非虚方法。

virtual修饰符不能与 static、abstract和 override修饰符一起使用。

除了声明和调用语法不同外,虚拟属性的行为与抽象方法一样。

(4) override:提供从基类继承的虚拟成员的新实现。

要扩展或修改继承的方法、属性、索引器或事件的抽象实现或虚实现,必须使用 override修饰符。

(5) readonly:声明一个字段,该字段只能赋值为该声明的一部分或者在同一个类的构造函数中。

是可以在字段上使用的修饰符。当字段声明包括 readonly修饰符时,该声明引入的字段赋值只能作为声明的一部分出现,或者出现在同一类的构造函数中。在此示例中,字段year的值无法在ChangeYear方法中更改,即使在类构造函数中给它赋了值。

=========================================================================

C#中除访问修饰符外,还有很多非访问的修饰符:

partial,abstract,sealed,static,virtual,override。

partial:部分类,可以将一个类分成几部分写在不同的文件中,最终编译时将合并

成一个文件,且各个部分不能分散在不同程序集中。

abstract:抽象类,不能够创建该类的实例;修饰方法时表示该方法需要由子类来

实现,如果子类没有实现该方法,那么子类同样是抽象类。含有抽象方

法的类一定是抽象类。

sealed:密封类,该类不能够被继承;修饰方法时表示该方法不能被重写。

static:静态类,不能被实例化,既然不能被实例化,那么这个类也就不能够含有

对象成员,即该类所有成员为静态;访问类成员时只能通过“类名.成员

名”的方式访问。

virtual:修饰方法成员,表示虚方法。父类可以含有该类的实现,子类可以重写该

方法。

override:表示该方法重写了父类的方法。

无或internal
  类只能在当前项目中访问
public
 类可以在任何地方访问公有访问。不受任何限制。

abstract或internal abstract
    类只能在当前项目中访问,不能实例化,只能继承私有访问
public abstract
    类可以在任何地方访问,不能实例化,只能继承
sealed或internal sealed
    类只能在当前项目中访问,不能派生,只能实例化
public sealed
    类可以在任何地方访问,不能派生,只能实例化

最新文章

  1. [Django]登陆界面以及用户登入登出权限
  2. strace命令使用
  3. vs2010 打包 SQL server compact 4.0 驱动程序
  4. sublime mac osx 命令行打开
  5. fprintf, fscanf,printf,scanf使用时参数注意
  6. stdout( 标准输出流)和 stderr( 标准输入流) 重定向问题
  7. compact过滤数组中的nil
  8. Android 编程下设置 Activity 切换动画
  9. Maya Shortcuts 常用快捷键
  10. C实现辗转相除法求两个数的最大公约数
  11. 《OD大数据实战》Hive入门实例
  12. hibernate annotation配置经验
  13. linux exec函数族
  14. Android:创建Android工程
  15. 独立说&花旗世界公民精英讲座胜利举行!
  16. org.apache.commons.dbcp.DelegatingPreparedStatement.isClosed()Z和NewProxyPreparedStatement.isClosed()
  17. Spring BPP中优雅的创建动态代理Bean
  18. oracle forall
  19. codeforces668b //Little Artem and Dance// Codeforces Round #348
  20. zabbix3.4.7安装在centos 7.4上

热门文章

  1. python:前端(HTML)+后端(Django)+数据库(MySQL)
  2. Rest_framework Serializer 序列化 (含源码浅解序列化过程)
  3. HTML5最佳实践web app
  4. ArcEngine GroupLayer监听图层改变
  5. Android之webview详解
  6. SQL Server移除事务日志后sys.master_files依然存在记录问题
  7. 从Windows转向Linux(在Windows下建立Deepin、Windows10双系统)
  8. Dubbo的@Reference和@Service说明
  9. 1 小时 SQL 极速入门(三)——分析函数
  10. Dom4J配合XPath解析schema约束的xml配置文件问题