访问修饰符

访问修饰符是一些关键字,用于指定声明的成员或类型的可访问性,C#有4个访问修饰符:public、private、protected、internal,使用这些访问修饰符可以指定以下5个访问级别:

  • public: 同一程序集(DLL或EXE)中的任何其他代码或引用该程序集的其他程序集都可以访问该类型或成员。
  • private: 只有同一类或结构中的代码可以访问该类型或成员。
  • protected: 只有同一类或结构或者此类的派生类中的代码才可以访问该类型或成员。
  • internal: 同一程序集中的任何代码都可以访问该类型或成员,但的代码不可以。
  • protected internal: 在一程序集中,protected internal体现的是internal的性质;在其他程序集中,protected internal体现的是protected的性质。

一个成员或类型只能有一个访问级别。

类型的可访问性

不嵌套在其他类型中的顶级类型的可访问性只能是internal或public,这些类型的默认可访问性是internal。嵌套类型是其他类型的成员,具有和其它成员一样的可访问性。

class A {} // 默认可访问性是internal

class B
{
class Nested {} // 默认可访问性是private
}

成员的可访问性

类型 默认的成员可访问性 该成员允许声明的可访问性
enum public
class private public、private、protected、internal、protected internal
interface public
struct private pubic、private、internal

abstract

使用abstract修饰的类为抽象类,抽象类只能是其他类的基类,不能与sealed、static一起使用。

abstract可以修饰抽象类中的方法或属性,此时,方法或属性不能包含实现,且访问级别不能为私有。

抽象类不能被实例化。

sealed

使用sealed修饰的类为密封类,密封类无法被继承,不能和abstract、static一起使用。

当sealed用于方法或属性时,必须始终与override一起使用。

static

使用static修饰的类为静态类,静态类所有成员都必须是静态的,不能与abstract、sealed一起使用。

static可以修饰方法、字段、属性或事件,始终通过类名而不是实例名称访问静态成员,静态字段只有一个副本。

静态类不能被实例化。

const

使用const关键字来声明某个常量字段或常量局部变量,必须在声明常量时赋初值。

不能与static一起使用,常量默认是static的,常量字段只有一个副本。

readonly

使用readonly关键字来声明只读字段。

只读字段可以在声明或构造函数中初始化,每个类或结构的实例都有一个独立的副本。

可以与static一起使用,声明静态只读字段。

静态只读字段可以在声明或静态构造函数中初始化,静态常量字段只有一个副本。

virtual

virtual关键字用于修饰方法、属性、索引器或事件声明,并使它们可以在派生类中被重写。

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

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

override

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

重写的成员必须是virtual、abstract或override的。

参考资料

1、修饰符

2、可访问级别

C#常用修饰符的更多相关文章

  1. Vue常用修饰符

    Vue提供了事件修饰符用于DOM的事件处理,常用的事件修饰符有以下几个: (1). stop:阻止冒泡(通俗讲就是阻止事件向上级DOM元素传递) 点击内层div的结果: 点击外层div的结果: 修改代 ...

  2. Java中常用修饰符使用汇总

    修饰符汇总: 一:public protected default private 修饰类,修饰方法,修饰属性,修饰代码块.  类: 顶级类只能用public 修饰,顶级类不能使用private 和p ...

  3. C#中常用修饰符

    1.存取修饰符 public:(公有的)存取不受限制 protected:(受保护的)只有包含该成员的类以及派生类可以存取  private:(私有的)只有包含该成员的类可以使用 2.类修饰符 abs ...

  4. vue2.0 事件处理常用修饰符-----------------记录,加强记忆。

    1,<!-- 阻止单击事件继续传播 --> <a v-on:click.stop="doThis"></a> stop修饰符对应的是阻止冒泡的e ...

  5. C语言常用修饰符

    前言 这两天在梳理自己C语言的知识,发现写了这么久的代码,居然所有的知识点都在自己的脑袋里.这可不好,万一老了呢.... 接下来的几天里,会以文字的形式,将这些知识整理出来,分享给大家. 想要看看英文 ...

  6. Java常用修饰符总结

    修饰符是用于限定类型以及类型成员申明的一种符号,可用于修饰类.变量和方法,分为访问修饰符和非访问修饰符.访问修饰符控制访问权限,不同的访问修饰符有不同的权限范围,而非访问修饰符则是提供一些特有功能. ...

  7. Vue中v-model指令的常用修饰符

    v-model指令有三个可以选用的修饰符:.lazy..number以及.trim.vue官方对此的描述为: .number-输入字符串转为有效的数字 .lazy-取代input监听change事件 ...

  8. Java中常用修饰符浅谈

    一.public.protected.default和private修饰符的作用域 public:在java程序中,如果将属性和方法定义为 public 类型,那么此属性和方法所在的类和及其子类,同一 ...

  9. vue常用的修饰符

    v-model修饰符 <template> <div id="demo14"> <p>-----------------模板语法之修饰符---- ...

随机推荐

  1. [规则原则定理]规则原则定理章1CAP原则

    CAP原则又称CAP定理,指的是在一个分布式系统中,Consistency(一致性). Availability(可用性).Partition tolerance(分区容错性),三者不可兼得 分布式系 ...

  2. 关键词提取_tf_idf

    TF-IDF(term frequency-inverse document frequency)-词频-逆文档频率 TF:统计一个词在文档中出现的频次,次数越多,表达能力越强 IDF:统计一个词在文 ...

  3. 【算法专题】工欲善其事必先利其器—— 常用函数和STL

    一.    常用函数 #include <stdio.h> int getchar( void );               //读取一个字符, 一般用来去掉无用字符 char *ge ...

  4. 【转】VxWorks中高精度实时时钟的实现及C语言汇编混合编程

    最近一个项目中需要在VxWorks下使用一个高精度实时时钟,要求精度为1ms,溢 出时间大于5小时.VxWorks提供系统时钟,该时钟在操作系统启动后开始计数,精度为1个tick,可以通过tickGe ...

  5. C语言基础第五次作业

    题目7-2 统计一行文本的单词个数 1.实验代码 #include <stdio.h> int main() { char a; ,countword=; ){ scanf("% ...

  6. 初学者问题一oracle

    问:(待解决)如何将纵向表改成横向表?       (待解决)如何实现对大型数据范围差距不大的索引?(建什么索引树)

  7. 再读c++primer plus 001

    1. OOP强调的是在运行阶段(而不是编译阶段)进行决策,运行阶段指的是程序正在运行时,编译阶段指的是编译器将程序组合起来时. 2.变量的值都存储在栈中,而new从被称为堆或自由存储区的内存区域分配内 ...

  8. Hadoop3集群搭建之——hive添加自定义函数UDF

    上篇: Hadoop3集群搭建之——虚拟机安装 Hadoop3集群搭建之——安装hadoop,配置环境 Hadoop3集群搭建之——配置ntp服务 Hadoop3集群搭建之——hive安装 Hadoo ...

  9. C++程序生成.exe文件,在文件夹中运行时闪现问题

    问题描述:在IDE(此为Dev-C++)中编写C++程序,运行时会产生如下文字 但我想取消这三行的显示. 解决方法:1:在IDE中运行时,“请按任意键继续”是消失不掉的,但在该程序的保存路径下可以消灭 ...

  10. 分分钟搞懂rank() over(partition by)的使用

    一.rank() over(partition by ...order by) 解释:partition  by用于给结果集分组,如果没有指定那么它把整个结果集作为一个分组. 二.语法:ROW_NUM ...