Skip to content

C# 关键字 keyword

关键字是预定义的保留标识符,对编译器有特殊意义。 除非前面有 @ 前缀,否则不能在程序中用作标识符。 例如,@if 是有效标识符,而 if 则不是,因为 if 是关键字。

访问修饰符 关键字 Access Modifier keyword

用于指定成员或类型已声明的可访问性。 本部分介绍四个访问修饰符:

访问修饰符说明
public关键字是类型和类型成员的访问修饰符。 公共访问是允许的最高访问级别。 对访问公共成员没有限制
private私有访问是允许的最低访问级别。 私有成员只有在声明它们的类和结构体中才是可访问的 (没写的话默认也是私有)
protected受保护成员在其所在的类中可由派生类实例访问
protected internal类似于public但是受限在同一个程序集当中
private protected只有自己类内部,或者派生类内部可访问。

修饰符 关键字 Modifier keyword

修饰符说明
abstract抽像 不能实例化的类,但是可能有实现了部分方法
async异步
const声明某个常量字段或常量局部变量
event声明发布服务器类中的事件
externextern 修饰符用于声明在外部实现的方法。 通常是调用C++写的非com的类库
newnew 关键字可以显式隐藏从基类继承的成员.
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 块中未发生异常,该代码也会被执行.
checkedchecked 和 unchecked用于对整型类型算术运算和转换显式启用溢出检查
uncheckedchecked 和 unchecked用于取消整型类型的算术运算和转换的溢出检查。
fixedfixed语句可防止垃圾回收器重新定位可移动的变量。 fixed 语句仅允许存在于不安全的上下文中
locklock获取给定对象的互斥锁

方法参数 关键字 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

关键字说明
newnew 约束指定泛型类声明中的类型实参必须有公共的无参数构造函数
where定义类型约束 public class AGenericClass<T> where T : IComparable<T> { }, 有定义后,Visual studio就会有智能提示了

访问 关键字 Access keyword

关键字说明
base关键字用于从派生类中访问基类的成员
this关键字指代类的当前实例,还可用作扩展方法的第一个参数的修饰符。

字面量 关键字 Literal keyword

关键字说明
nullnull是引用类型的默认值
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子句中的上下文关键字。
ascendingorderby 子句中的上下文关键字。
descendingorderby 子句中的上下文关键字。

参考 https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/

简单就是美