C# 关键字 keyword
关键字是预定义的保留标识符,对编译器有特殊意义。 除非前面有 @ 前缀,否则不能在程序中用作标识符。 例如,@if 是有效标识符,而 if 则不是,因为 if 是关键字。
访问修饰符 关键字 Access Modifier keyword
用于指定成员或类型已声明的可访问性。 本部分介绍四个访问修饰符:
| 访问修饰符 | 说明 |
|---|---|
| public | 关键字是类型和类型成员的访问修饰符。 公共访问是允许的最高访问级别。 对访问公共成员没有限制 |
| private | 私有访问是允许的最低访问级别。 私有成员只有在声明它们的类和结构体中才是可访问的 (没写的话默认也是私有) |
| protected | 受保护成员在其所在的类中可由派生类实例访问 |
| protected internal | 类似于public但是受限在同一个程序集当中 |
| private protected | 只有自己类内部,或者派生类内部可访问。 |
修饰符 关键字 Modifier keyword
| 修饰符 | 说明 |
|---|---|
| abstract | 抽像 不能实例化的类,但是可能有实现了部分方法 |
| async | 异步 |
| const | 声明某个常量字段或常量局部变量 |
| event | 声明发布服务器类中的事件 |
| extern | extern 修饰符用于声明在外部实现的方法。 通常是调用C++写的非com的类库 |
| new | new 关键字可以显式隐藏从基类继承的成员. |
| override | 扩展或修改继承的方法、属性、索引器或事件的抽象或虚拟实现需要 override 修饰符 |
| partial | 部分 类,可以把一个类 结构 接口 记录 放到多个文件里面去 |
| readonly | 只读 readonly 字段只能在构造器更改, readonly struct 构造类型不可变 |
| sealed | 应用于某个类时,sealed 修饰符可阻止其他类继承自该类. (微软自带类有一些不让人继承,有时候会给我们带来好多的麻烦) |
| static | 静态类,静态方法, using static,静态构造函数 |
| unsafe | 关键字表示不安全上下文,该上下文是任何涉及指针的操作所必需的 |
| virtual | 用于修改方法、属性、索引器或事件声明,并使它们可以在派生类中被重写 |
| volatile | 用Volatile声明的变量就相当于告诉编译器,不要进行编译优化(假定由单个线程访问),从内存中读取数值。 (没有线程安全) |
| in | 对于泛型类型参数,in 关键字可指定类型参数是逆变的。 |
| out | 对于泛型类型参数,out 关键字可指定类型参数是协变的。 |
语句 关键字 Statement keyword
| 关键字 | 类别 | 说明 |
|---|---|---|
| if | 选择语句 | |
| else | 选择语句 | |
| switch | 选择语句 | 语句包含一个或多个开关部分。 每个 switch 部分包含一个或多个 case 标签(case 或 default 标签),后接一个或多个语句。 |
| case | 选择语句 | |
| case when | 选择语句 | C# 7.0 开始,因为 case 语句不需要互相排斥,因此可以添加 when 子句来指定必须满足的附加条件使 case 语句计算为 true |
| do | 迭代语句 | |
| for | 迭代语句 | |
| foreach in | 迭代语句 | |
| while | 迭代语句 | |
| break | 跳转语句 | 语句将终止其所在位置的最接近封闭循环或 switch 语句。 控制权将传递给已终止语句后面的语句(若有) |
| continue | 跳转语句 | 语句将控制传递到其中出现的封闭 while、do、for 或 foreach 语句的下一次迭代 |
| default | 跳转语句 | 配合swith 用的, |
| goto | 跳转语句 | 语句将程序控制直接传递给标记语句 |
| return | 跳转语句 | 语句可终止它所在的方法的执行,并将控制权返回给调用方法。 它还可以返回可选值。 如果方法是 void 类型,则 return 语句可以省略。 <br > 如果 return 语句位于 try 块中,则 finally 块(如果存在)会在控制权返回给调用方法之前进行执行。 |
| yield | 跳转语句 | |
| throw | 异常处理语句 | 抛出程序执行期间出现异常的信号 |
| try - catch | 异常处理语句 | 包含一个后接一个或多个 catch 子句的 try 块,这些子句指定不同异常的处理程序 |
| try - finally | 异常处理语句 | 通过使用 finally 块,可以清除 try 块中分配的任何资源,即使在 try 块中未发生异常,该代码也会被执行. |
| checked | checked 和 unchecked | 用于对整型类型算术运算和转换显式启用溢出检查 |
| unchecked | checked 和 unchecked | 用于取消整型类型的算术运算和转换的溢出检查。 |
| fixed | fixed | 语句可防止垃圾回收器重新定位可移动的变量。 fixed 语句仅允许存在于不安全的上下文中 |
| lock | lock | 获取给定对象的互斥锁 |
方法参数 关键字 Method Parameter keyword
| 关键字 | 说明 |
|---|---|
| params | 使用 params 关键字可以指定采用数目可变的参数的方法参数。 参数类型必须是一维数组。 |
| ref | 关键字指示按引用传递值,引用返回值, |
| out | 它与 ref 关键字相似,只不过 ref 要求在传递之前初始化变量。 |
| in | 它类似于 ref 或 out 关键字,不同之处在于 in 参数无法通过调用的方法进行修改 |
命名空间关键字 Namespace keyword
| 关键字 | 说明 |
|---|---|
| using | 引入命名空间 <br> using static 允许访问类型的静态成员和嵌套类型,为命名空间或类型创建别名 <br>using Project = PC.MyCompany.Project; <br>提供可确保正确使用 IDisposable,IAsyncDisposable 对象的方便语法 |
| extern alias | 可能需要在同一应用程序中使用某程序集的两个或多个版本。 通过使用外部程序集别名,可在别名命名的根级别命名空间内包装每个程序集的命名空间,使其能够在同一文件中使用 |
| :: operator | 配合外部别名进行使用 using Class1V1 = GridV1::Namespace.Class1; |
泛型约束 关键字 Generic type constraint keyword
| 关键字 | 说明 |
|---|---|
| new | new 约束指定泛型类声明中的类型实参必须有公共的无参数构造函数 |
| where | 定义类型约束 public class AGenericClass<T> where T : IComparable<T> { }, 有定义后,Visual studio就会有智能提示了 |
访问 关键字 Access keyword
| 关键字 | 说明 |
|---|---|
| base | 关键字用于从派生类中访问基类的成员 |
| this | 关键字指代类的当前实例,还可用作扩展方法的第一个参数的修饰符。 |
字面量 关键字 Literal keyword
| 关键字 | 说明 |
|---|---|
| null | null是引用类型的默认值 |
| false | 布尔类型 false |
| true | 布尔类型 false |
| default | 一个引用类型,或者值类型的默认值 |
上下文关键字 Contextual keyword
上下文关键字用于在代码中提供特定含义,但它不是 C# 中的保留字
| 关键字 | 说明 |
|---|---|
| add | 定义一个自定义事件访问器,客户端代码订阅事件时会调用该访问器。 |
| and | 创建在两个嵌套模式均匹配时匹配的模式。 |
| async | 指示修改后的方法、lambda 表达式或匿名方法是异步的。 |
| await | 挂起异步方法,直到等待的任务完成。 |
| dynamic | 定义一个引用类型,实现发生绕过编译时类型检查的操作。 |
| get | 为属性或索引器定义访问器方法。 |
| global | 未以其他方式命名的全局命名空间的别名。 |
| init | 为属性或索引器定义访问器方法。 |
| nint | 定义本机大小的整数数据类型。 |
| not | 创建在否定模式不匹配时匹配的模式。 |
| nuint 定 | 义本机大小的无符号整数数据类型。 |
| or | 创建在任一嵌套模式匹配时匹配的模式。 |
| partial | 在整个同一编译单元内定义分部类、结构和接口。 |
| record | 用于定义记录类型。 |
| remove | 定义一个自定义事件访问器,客户端代码取消订阅事件时会调用该访问器。 |
| set | 为属性或索引器定义访问器方法。 |
| value | 用于设置访问器和添加或删除事件处理程序。 |
| var | 使编译器能够确定在方法作用域中声明的变量类型。 |
| when | 指定 catch 块的筛选条件或 switch 语句的 case 标签。 |
| where | 将约束添加到泛型声明。 |
| yield | 在迭代器块中使用,用于向枚举数对象返回值或用于表示迭代结束。 |
查询关键字 Query keyword
在查询表达式中使用的上下文关键字。 语言集成查询 (LINQ)
| 关键字 | 说明 |
|---|---|
| from | 指定数据源和范围变量(类似于迭代变量)。 |
| where | 基于由逻辑 AND 和 OR 运算符(&& 或 ||)分隔的一个或多个布尔表达式筛选源元素。 |
| select | 指定执行查询时,所返回序列中元素的类型和形状。 |
| group | 根据指定的密钥值对查询结果分组。 |
| into | 提供可作为对 join、group 或 select 子句结果引用的标识符。 |
| orderby | 根据元素类型的默认比较器对查询结果进行升序或降序排序。 |
| join | 基于两个指定匹配条件间的相等比较而联接两个数据源。 |
| let | 引入范围变量,在查询表达式中存储子表达式结果。 |
| in join | 子句中的上下文关键字。 |
| on join | 子句中的上下文关键字。 |
| equals join | 子句中的上下文关键字。 |
| by group | 子句中的上下文关键字。 |
| ascending | orderby 子句中的上下文关键字。 |
| descending | orderby 子句中的上下文关键字。 |
参考 https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/
