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
    类可以在任何地方访问,不能派生,只能实例化

C#语言中的修饰符的更多相关文章

  1. JAVA语言中的修饰符

    JAVA语言中的修饰符 -----------------------------------------------01--------------------------------------- ...

  2. 关于Java语言中那些修饰符

    一.在java中提供的一些修饰符,这些修饰符可以修饰类.变量和方法,在java中常见的修饰符有:abstract(抽象的).static(静态的).public(公共的).protected(受保护的 ...

  3. 枚举java语言中的修饰符组合

    package model; /*22:37 2019/7/20*/ /* top class的修饰符组合 abstract final public 2 * 2 * 2 warning: abstr ...

  4. C/C++ 中 const 修饰符用法总结

    C/C++ 中 const 修饰符用法总结 在这篇文章中,我总结了一些C/C++语言中的 const 修饰符的常见用法,供大家参考. const 的用法,也是技术性面试中常见的基础问题,希望能够帮大家 ...

  5. Java中访问修饰符public、private、protecte、default

    Java中访问修饰符public.private.protecte.default的意义讲解:public: Java语言中访问限制最宽的修饰符,一般称之为“公共的”.被其修饰的类.属性以及方法不 仅 ...

  6. Java中的 修饰符

    java中的修饰符分为类修饰符,字段修饰符,方法修饰符. 根据功能的不同,主要分为以下几种. 1.权限访问修饰符  访问权限的控制常被称为具体实现的隐藏 把数据和方法包进类中,以及具体实现的隐藏,常共 ...

  7. Java中final修饰符深入研究

    一.开篇 本博客来自:http://www.cnblogs.com/yuananyun/ final修饰符是Java中比较简单常用的修饰符,同时也是一个被"误解"较多的修饰符.对很 ...

  8. vue中的修饰符

    Vue2.0学习笔记:Vue事件修饰符的使用   事件处理 如果需要在内联语句处理器中访问原生DOM事件.可以使用特殊变量$event,把它传入到methods中的方法中. 在Vue中,事件修饰符处理 ...

  9. Java中各种修饰符与访问修饰符

    Java中各种修饰符与访问修饰符 类: 访问修饰符 修饰符 class 类名称 extends 父类名称 implement 接口名称 (访问修饰符与修饰符的位置可以互换) 访问修饰符 名称 说明 备 ...

随机推荐

  1. go.js remove 特定part

    我想删除一个实际上是背景的部分. 假设这是我添加part的方式 myDiagram.add( scope.gj(go.Part,//此Part未绑定到任何模型数据 { layerName:“Backg ...

  2. geoserver发布mysql表数据

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.环境部署 Geoserver中并不自带mysql数据发布功能,需要下 ...

  3. idea解决Maven jar依赖冲突(四)

    首先点击右侧的MavenProjects打开以下界面: 这个界面是maven的命令界面: 点击这个图标会进入如下界面: 左上角可以缩放,点击线可以取消冲突依赖,红色线为冲突依赖. 上图为无依赖冲突的s ...

  4. 【RL-TCPnet网络教程】第41章 HTTP超文本传输协议基础知识

    第41章      HTTP超文本传输协议基础知识 本章节为大家讲解HTTP(HyperText Transfer Protocol,超文本传输协议),从本章节开始,正式进入嵌入式Web的设计和学习. ...

  5. java的poi技术读取和导入Excel实例

    本篇文章主要介绍了java的poi技术读取和导入Excel实例,报表输出是Java应用开发中经常涉及的内容,有需要的可以了解一下. 报表输出是Java应用开发中经常涉及的内容,而一般的报表往往缺乏通用 ...

  6. 腾迅云CDN的使用

    一开始,我是想和七牛云一样,将腾迅云的对象存储作为网盘使用,不过在折腾的时间,搞不清楚腾迅云CDN的用法,最后看文档,看博客,大概了解了 这里讲两种用法,一种是结合对象存储,作一个静态网站或下载站,但 ...

  7. Java笔试题库之选题题篇【141-210题】

    141.Struts框架可以支持以下哪种程序开发语言? A.C B.C++ C.Java D.C# 解答:C 142.在Servlet处理请求的方式为. A.以进程的方式 B.以程序的方式 C.以线程 ...

  8. Docker & ASP.NET Core (5):Docker Compose

    第一篇:把代码连接到容器 第二篇:定制Docker镜像 第三篇:发布镜像 第四篇:容器间的连接 Docker Compose简介 Compose是一个用来定义和运行多容器Docker应用的工具.使用C ...

  9. 机器学习算法GBDT的面试要点总结-上篇

    1.简介 gbdt全称梯度下降树,在传统机器学习算法里面是对真实分布拟合的最好的几种算法之一,在前几年深度学习还没有大行其道之前,gbdt在各种竞赛是大放异彩.原因大概有几个,一是效果确实挺不错.二是 ...

  10. 没错,老板让我写个 BUG!

    前言 标题没有看错,真的是让我写个 bug! 刚接到这个需求时我内心没有丝毫波澜,甚至还有点激动.这可是我特长啊:终于可以光明正大的写 bug 了