C# 关键字 keyword
关键字是预定义的保留标识符,对编译器有特殊意义。 除非前面有 @ 前缀,否则不能在程序中用作标识符。 例如,@if 是有效标识符,而 if 则不是,因为 if 是关键字。
用于指定成员或类型已声明的可访问性。 本部分介绍四个访问修饰符:
| 访问修饰符 |
说明 |
| 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 语句可以省略。 如果 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 |
引入命名空间 using static 允许访问类型的静态成员和嵌套类型,为命名空间或类型创建别名 using Project = PC.MyCompany.Project; 提供可确保正确使用 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/