1、 访问修饰符、
  指定声明的类型和类型成员的可访问性。
  (1) public是类型和类型成员的访问修饰符。公共访问是允许的最高访问级别。对访问公共成员没有限制。
  (2) private:是一个成员访问修饰符。私有访问是允许的最低访问级别。私有成员只有在声明它们的类和结  构体中才是可访问的。
  (3) internal是类型和类型成员的访问修饰符。只有在同一程序集的文件中,内部类型或成员才是可访问的。
  (4)protected是一个成员访问修饰符。受保护成员在它的类中可访问并且可由派生类访问。

2、abstract:指示某个类只能是其他类的基类。
可以和类、方法、属性、索引器及事件一起使用。在类声明中使用 abstract修饰符以指示某个类只能是其他类的基类。标记为抽象或包含在抽象类中的成员必须通过从抽象类派生的类来实现。

3、const:指定无法修改字段或局部变量的值。

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

4、event:声明事件。

类和结构使用事件将出现的可能影响对象状态的事件通知给对象。

  5、extern:指示在外部实现方法。

  用于声明在外部实现的方法。extern修饰符的常见用法是在使用 Interop 服务 调入非托管代码时与 DllImport属性一起使用;在这种情况下,该方法还必须声明为 static

  extern关键字还可以定义外部程序集别名,使得可以从单个程序集中引用同一组件的不同版本。

将 abstract和 extern修饰符一起使用来修改同一成员是错误的。使用 extern修饰符意味着方法在 C# 代码的外部实现,而使用 abstract修饰符意味着在类中未提供方法实现。

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

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

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

  在不隐藏继承成员的声明中使用 new修饰符将会生成警告。

7、override:提供从基类继承的虚拟成员的新实现。

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

8、partial:在整个同一程序集中定义分部类和结构。

分部类型定义允许将类、结构或接口的定义拆分到多个文件中。

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

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

10、sealed:指定类不能被继承。

可以应用于类、实例方法和属性。密封类不能被继承。密封方法会重写基类中的方法,但其本身不能在任何派生类中进一步重写。当应用于方法或属性时,sealed修饰符必须始终与override一起使用。

在类声明中使用 sealed修饰符可防止继承此类

11、static:声明属于类型本身而不是属于特定对象的成员。

声明属于类型本身而不是属于特定对象的静态成员。可用于类、字段、方法、属性、运算符、事件和构造函数,但不能用于索引器、析构函数或类以外的类型。

12、unsafe:声明不安全的上下文。该上下文是任何涉及指针的操作所必需的。

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

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

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

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

virtual修饰符不能与 staticabstractoverride修饰符一起使用。

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

· 在静态属性上使用 virtual修饰符是错误的。
  · 通过包括使用 override修饰符的属性声明,可在派生类中重写虚拟继承属性。

14、volatile:指示字段可由操作系统、硬件或并发执行线程等在程序中进行修改。

volatile关键字表示字段可能被多个并发执行线程修改。声明为 volatile的字段不受编译器优化(假定由单个线程访问)的限制。这样可以确保该字段在任何时间呈现的都是最新的值。

volatile修饰符通常用于由多个线程访问而不使用 lock 语句(C# 参考)语句对访问进行序列化的字段。

volatile关键字可应用于以下类型:

· 引用类型。

· 指针类型(在不安全的上下文中)。

· 整型,如 sbyte、byte、short、ushort、int、uint、char、float 和 bool。

· 具有整数基类型的枚举类型。

· 已知为引用类型的泛型类型参数。

· IntPtr 和 UIntPtr。

所涉及的类型必须是类或结构的字段。不能将局部变量声明为 volatile

转载于:https://www.cnblogs.com/yeye518/archive/2008/05/05/2231758.html

c# 访问修饰符的访问权限相关推荐

  1. java 修饰符 访问控制符_Java访问修饰符(访问控制符)

    Java 通过修饰符来控制类.属性和方法的访问权限和其他功能,通常放在语句的最前端.例如: public classclassName { // body of class } private boo ...

  2. Java访问修饰符(访问控制符)

    Java 通过修饰符来控制类.属性和方法的访问权限和其他功能,通常放在语句的最前端.例如: public class className { // body of class } private bo ...

  3. java 修饰符 访问控制符_《Java基础知识》Java访问修饰符(访问控制符)

    Java 通过修饰符来控制类.属性和方法的访问权限和其他功能,通常放在语句的最前端.例如: public classclassName {//body of class }private boolea ...

  4. java访问修饰符_Java访问修饰符

    java访问修饰符 Java access modifiers are used to provide access control in java. Java provides access con ...

  5. scala 访问修饰符_Scala访问修饰符–私有,受保护的和公共的

    scala 访问修饰符 The restriction of scope to certain places is realized with the help of access modifiers ...

  6. JAVA SE、EE、ME,JRE、JDK,基本数据类型,访问修饰符、函数、封装的概念、UML类图、构造方法、this关键字、static关键字、方法重载、方法重写、包(packahe)

    运行第一个JAVA程序: 这里使用的开发环境是eclipse,新建一个java工程,然后可以看到src这个是存放java代码的地方,然后在src文件右击新建一个class(类),然后可以看到下图,同样 ...

  7. java 接口中变量修饰符,Java的访问修饰符与变量的作用域讲解

    Java访问修饰符(访问控制符) Java 通过修饰符来控制类.属性和方法的访问权限和其他功能,通常放在语句的最前端.例如: ? Java 的修饰符很多,分为访问修饰符和非访问修饰符.本节仅介绍访问修 ...

  8. Java笔记013-IDEA、包、访问修饰符、封装、继承、多态、Super、方法重写/覆盖(override)、java的动态绑定机制

    目录 面向对象编程(中级部分) IDE(集成开发环境)-IDEA IDEA介绍 IDE(集成开发环境)-Eclipse Eclipse介绍 IDEA的安装 IDEA的基本介绍和使用 创建一个java项 ...

  9. Java的四种访问修饰符介绍

    Java的四种访问修饰符详解 Java的四种访问修饰符分别是:public.protected.default.private 四种访问修饰符的访问范围: 访问修饰符类型 本类 本包 不同包中的子类 ...

最新文章

  1. Java 基础 之 三目运算
  2. 如何在 SQL 2008 安裝 Performance Dashboard Reports
  3. leetcode 155. 最小栈
  4. 面试题整理10 最小的k个数
  5. Win10修改防火墙入站规则
  6. Django框架(12.Django中模型类高阶查询(Q对象以及F对象 和聚合函数查询))
  7. boost::gil::rgb8_image_t::recreate用法的测试程序
  8. 1.18.2.10 解释表:Table.explain、物理执行计划等
  9. Redis面试 - Redis 主从架构
  10. 本文为 2021 年 5 月知识总结
  11. 图像扩充边界_使用机器学习来索引数十亿图像中的文本
  12. CSS3 column属性族firefox浏览器下的问题
  13. React Hooks 起手式,实现一个「高颜值实用」的色彩设计工具
  14. Android SDK下载太慢
  15. MATLAB机器人工具箱的下载与安装
  16. python输出斐波那契数列_Python实现斐波那契数列
  17. 图的应用:骑士周游问题
  18. 11月更新!一口气上线20+新功能,3D架构拓扑图更具趣味性~
  19. [试错题库]中国政企ASP服务规范性考试
  20. 【124】JavaScript获取下一个、上一个兄弟节点

热门文章

  1. gis环境设置在哪_三维GIS平台的可视化应用 (下)
  2. UE4学习-创建基于C++的场景
  3. html图片按页码显示,html - 在打印html文档时显示页码 - 堆栈内存溢出
  4. php 数组元素分类,数组分类、定义及遍历
  5. python数据科学指南是什么_《Python数据科学指南》——导读
  6. linux panic 构造_Linux Wireless架构总结
  7. java解析sql查询字段_sql解析json格式字段 如何获取json中某个字段的值?
  8. 2万人同时访问 nodejs_面向前端工程师的Nodejs入门手册(一)
  9. oracle 触发器 select :new,帮忙看下这个oracle触发器,在select后面的where语句有有关问题,但不知道什么有关问题...
  10. go mysql recover_golang recover后怎么返回