https://www.xin3721.com/eschool/python.html

修饰符是用于限定类型以及类型成员的申明的一种符号。 下面主要从C#中的访问修饰符,作用于类和结构的修饰符,用在方法或变量的修饰符和特殊作用的修饰符四种,来给大家介绍。

1. 访问修饰符

指定声明的类型和类型成员的可访问性。

(1) public:是类型和类型成员的访问修饰符。公共访问是允许的最高访问级别。对访问公共成员没有限制。

(2) private:是一个成员访问修饰符。私有访问是允许的最低访问级别。私有成员只有在声明它们的类和结 构体中才是可访问的。

(3) internal:是类型和类型成员的访问修饰符。只有在同一程序集的文件中,内部类型或成员才是可访问的。

(4) protected:是一个成员访问修饰符。受保护成员在它的类中可访问并且可由派生类访问。

2. 可以作用于类和结构的修饰符

(1) abstract:指示某个类只能是其他类的基类。

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

(2) sealed:指定类不能被继承。

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

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

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

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

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

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

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

(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方法中更改,即使在类构造函数中给它赋了值。

4. 特殊作用的修饰符

(1) event:声明事件。

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

(2) extern:指示在外部实现方法。

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

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

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

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

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

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

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

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

(1)引用类型。

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

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

(4)具有整数基类型的枚举类型。

(5)已知为引用类型的泛型类型参数。

(6)IntPtr 和 UIntPtr。

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

以上就是关于C#修饰符的所有内容,希望对大家的学习有所帮助。

python修饰符用法_c#教程之C#语言中的修饰符汇总相关推荐

  1. python实时监控文件目录_c#教程之c#使用filesystemwatcher实时监控文件目录的

    /// /// 文件监控类,用于监控指定目录下文件以及文件夹的变化 /// public class FileWatcher { private FileSystemWatcher _watcher ...

  2. python获取网络打印机状态_c#教程之C# 获取打印机当前状态的方法

    要获得打印机的状态,应该定义一个联合. 复制代码 代码如下: enum PrinterStatus { 其他状态= 1, 未知, 空闲, 正在打印, 预热, 停止打印, 打印中, 离线 } 其中的&q ...

  3. 菜鸟教程之C语言基础(上)

    菜鸟教程之C语言基础(上) 一.前言: 前几天,在看另一个教程视频,总感觉太啰嗦,讲的东西不符合我想要的. 这里,通过菜鸟教程,看一遍文档,打一遍笔记,想通过这样学一下C语言的基础. 感谢菜鸟教程. ...

  4. java修饰方法有哪些,探讨Java语言中那些修饰符

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

  5. python语言中的注释符_各种语言中的注释符总结

    各种语言中的注释符 c语言 /* 注释内容*/ // 注释内容 Pascal: { 注释内容} Vb: Rem 注释内容 '注释内容 Vbscript: '注释内容 rem 注释内容 Javascri ...

  6. Kail Linux渗透测试教程之在Metasploit中扫描

    Kail Linux渗透测试教程之在Metasploit中扫描 在Metasploit中扫描 在Metasploit中,附带了大量的内置扫描器.使用这些扫描器可以搜索并获得来自一台计算机或一个完整网络 ...

  7. iOS开发教程之OC语言-欧阳坚-专题视频课程

    iOS开发教程之OC语言-34296人已学习 课程介绍         Objective-C是扩充C的面向对象编程语言,iOS开发是用的Objective-C语言,本专题更系统的讲解Objectiv ...

  8. c语言中占位符,Java C# C语言中的占位符

    一般拼接一段字符串在编程中是很常见的事,下面简单做个总结: 什么是占位符?占位符就是先占住一个固定的位置,等着你再往里面添加内容的符号. 1.Java中处理方法: package com.amos; ...

  9. 【C语言进阶剖析】13.C语言中的接续符和转义符

    文章目录 一.接续符的意义 二.接续符的使用 三.转义符的意义 四.转义符的使用 五.转义符和其他的语法混合 六.小结 一.接续符的意义 C语言中的接续符(\)是指示编译器行为的利器 下面看一段接续符 ...

最新文章

  1. 一晚上就能让你小腹变小的方法 - 健康程序员,至尚生活!
  2. GPT「高仿」问世:GPT-Neo,最大可达GPT-3大小,已开源 | AI日报
  3. Word中查找和替换功能详细介绍
  4. ruby语言开源Web应用框架 Ruby on Rails 简介
  5. ai作文批改_英语写作怎么提升?讯飞智能学习机AI作文批改带你实战练习
  6. Linux软件安装管理 - CentOS (二) ---- yum在线安装
  7. C# 采用系统委托的方式处理线程内操作窗体控件(转载)
  8. 将CLASS文件打包成可运行的jar文件
  9. Php接收Vba post例子,vba发送窗口消息_postmessage
  10. 电商视觉:焦点图的万能构图模板
  11. django1.10.3下admin后台管理老是显示object
  12. 各种边缘检测算子特点比较(canny)
  13. 小米 android 7.0下载地址,小米4安卓7.0
  14. Linux(Ubuntu)菜单栏(工具栏)隐藏了,怎么显示出来
  15. 【ElasticSearch系列连载】1. ES版本与开源简介
  16. 儿童“益”站线上课堂 战“疫”不停学
  17. Arcgis报错 ERROR 999999的解决方法汇总
  18. 恶意程序- 安全建议
  19. FITC-TAT-Smad7-HA融合蛋白,荧光素标记TAT-Smad7-HA融合蛋白
  20. 4g物联网模块dtu网络远程开关控制器485通讯 工业级TTL转4G串口服务器 全网通路由模块 通信通讯模组 二次开发

热门文章

  1. 目录访问共享C#怎么访问共享目录
  2. 一个自动化测试的案例之记事狗微博篇
  3. 案例:实现文件下载并能正确显示中文文件名
  4. JavaScript(js)概述和使用
  5. 阶乘之和计算_浅谈积分计算的技巧
  6. js几个页面生成pdf 然后批量打印_太好用了!这款免费PDF工具能够满足你的各种需求...
  7. 封年大促|年货节优秀PSD分层模板
  8. 电商年底年终促销页面,这种创意你收好
  9. 促销海报设计的套路你知道么? 看这里!
  10. 简约几何艺术海报PSD分层模板,即使简单也足以控制观众的注意力。