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/