关键字速查表
Cheat Table of C# Keywords
C# 的关键字主要有两种:预定义关键字(Predefined Keyword)和上下文关键字(Contextual Keyword)。其中预定义关键字是 C# 原生支持的关键字,它们在任何时候的任何代码下都是固定的用法和方式,如果你要想让你的标识符和该关键字重名,需要使用原义字符 @ 修饰你定义的该变量;上下文关键字则是在一些语法的上下文里才会表示成关键字样式,但自身并不是 C# 一定随时随地都起作用的关键字,这样的关键字可以作为自己定义的变量名。
举个例子,预定义关键字包括比如 foreach、abstract、class、int 等等,而上下文关键字包括 get、set、add、remove 等等。
另外,C# 还存在别的关键字类型,这些关键字并不在 C# 微软官方文档 Microsoft Docs 里,甚至压根没有提及到它们,这些关键字我将会在这里全部给出,不过它们将以脚注的形式呈现出来。
本文陈列 C# 的所有关键字,并且相关的解释页面。
abstract
预定义
C# 1
用于类和成员表示该类或成员必须由派生类型实现
上下文
C# 8
用于指示接口里实例成员(如果支持的话)的抽象情况
上下文
C# 11
用于配合 static 构成 static abstract 组合修饰,在接口里声明抽象静态成员
add
上下文
C# 1
用于事件成员的添加器声明部分
and
上下文
C# 9
用于合取模式匹配
alias
上下文
C# 2
用于声明 extern alias 指令以区分不同 DLL 文件下的同命名空间的同名的不同类型
allows
上下文
C# 13
用于泛型约束 allows ref struct,表示 ref struct 可用作泛型参数
args
上下文
C# 9
用于表示隐式 Main 方法下的参数,类型是 string[]
as
预定义
C# 1
允许对象尝试对指定类型转换,不抛异常(但转换失败后返回 null)
ascending
上下文
C# 3
用于 LINQ 查询表达式的 orderby 从句,表示排序过程为升序排序
assembly
特性
C# 1
用于表示特性用于一个程序集
async
上下文
C# 5
用于异步方法及异步 Lambda 的声明
await
上下文
C# 5
用于调用异步方法,等待该异步方法的携程执行,待完成后获取异步处理后的结果
上下文
C# 8
用于声明 await using 和 await foreach 语句的配合关键字
base
预定义
C# 1
调用基类型构造器和非抽象成员
bool
预定义
C# 1
数据类型 System.Boolean 的别名
break
预定义
C# 1
用于跳出循环语句和 switch 的每一个 case 语句
上下文
C# 2
构成 yield break 语句的一部分
by
上下文
C# 3
用于 LINQ 查询表达式的 group-by 从句,表示按什么结果分组
byte
预定义
C# 1
数据类型 System.Byte 的别名
case
预定义
C# 1
用于表述每一种 switch 语句的情况
catch
预定义
C# 1
用于配合 try 块捕获异常类型,可重复使用该关键字捕获不同的异常类型
char
预定义
C# 1
数据类型 System.Char 的别名
checked
预定义
C# 1
表示表达式或块内代码在运算超出数据范围时候抛出异常
上下文
C# 11
表示一些可能导致溢出的基本运算符,允许重载的时候规定溢出行为
class
预定义
C# 1
用于声明类类型
上下文
C# 2
用于泛型约束,表示泛型参数必须是一个引用类型
上下文
C# 10
用于配合 record 关键字,声明记录类
const
预定义
C# 1
用于常量的声明,该类型变量于编译期间生成且数据只读
continue
预定义
C# 1
用于直接结束当前循环过程,准备进行下一轮循环过程
decimal
预定义
C# 1
数据类型 System.Decimal 的别名
default
预定义
C# 1
用于 switch 语句表示缺省的数值情况
预定义
C# 1
用于 default 表达式表达某种数据类型的初始默认值
上下文
C# 7
(C# 7.1)用于隐式 default 表达式
上下文
C# 9
用于 default 泛型约束,表示无约束的泛型参数调用方法
delegate
预定义
C# 1
用于委托类型的声明
descending
上下文
C# 3
用于 LINQ 查询表达式的 orderby 从句,表示排序过程为降序排序
上下文
C# 2
用于匿名函数的声明
上下文
C# 9
用于函数指针的声明
do
预定义
C# 1
表示 do-while 循环的声明
double
预定义
C# 1
数据类型 System.Double 的别名
dynamic
上下文
C# 4
表示数据为动态类型,调用成员可按弱类型方式调用,调用成员过程将推后到运行时验证
else
预定义
C# 1
用于 if-else 条件判断语句的声明
enum
预定义
C# 1
用于枚举类型的声明
equals
上下文
C# 3
用于 LINQ 查询表达式的 join-in-on-equals 从句,表示等值连接的对象或成员
event
预定义
C# 1
用于事件成员的声明
特性
C# 1
用于表示特性用于一个事件
explicit
预定义
C# 1
用于显式转换器的声明
上下文
C# 13
用于修饰 extension,表示该扩展类型必须以实例类型使用
extension
上下文
C# 13
用于表示一个类型的扩展类型。它可提供扩展实现(如扩展成员、扩展接口实现)以及值类型的类派生效果
extern
预定义
C# 1
用于声明 C/C++ 代码封装起来的外部函数
上下文
C# 2
用于声明 extern alias 指令以区分不同 DLL 文件下的同命名空间的同名的不同类型
false
预定义
C# 1
表示 bool 类型的其中一个常量
field
特性
C# 1
用于表示特性用于一个字段
上下文
C# 12
用于半自动属性,表示出属性底层包装的字段
finally
预定义
C# 1
用于 try-catch-finally 或 try-finally 语句
file
上下文
C# 11
用于声明只在当前文件里访问的嵌套或顶级类型
fixed
预定义
C# 1
用于固定数组、字符串等对象,以防止 GC 在使用对象指针的时候被回收
上下文
C# 2
用于在结构里声明一个定长缓冲区,可以不固定的同时完成缓冲区的对象索引
float
预定义
C# 1
数据类型 System.Single 的别名
for
预定义
C# 1
用于 for 循环的声明
foreach
预定义
C# 1
用于 foreach 循环的声明
上下文
C# 8
用于 await foreach 循环的声明,表示元素异步迭代
from
上下文
C# 3
用于 LINQ 查询表达式的 from-in 从句,表示迭代一个集合的成员
get
上下文
C# 1
用于属性的取值器声明部分
global
上下文
C# 2
表示全局命名空间,防止出现自定义 System 命名空间而导致无法编译代码的问题
上下文
C# 10
配合 using 构成 global using 和 global using static 指令
goto
预定义
C# 1
用于跳转到指定的标签上去
group
上下文
C# 3
用于 LINQ 查询表达式的 group-by 从句,表示将一个集合分组
if
预定义
C# 1
用于 if 或 if-else 条件判断语句的声明
implicit
预定义
C# 1
用于隐式转换器的声明
上下文
C# 13
用于修饰 extension,表示该类型以类扩展方法的形式存在,可不引用其所在的类型即可使用
in
预定义
C# 1
用于 foreach 循环里表示迭代过程
上下文
C# 3
用于 from-in 从句或 join-in-on-equals 从句
上下文
C# 4
用于接口和委托类型的泛型参数,声明该泛型参数具有逆变性
上下文
C# 7
(C# 7.2)用于参数,表示参数以引用传递,且只读
上下文
C# 12
用于实参表示传入的数值是以引用传递,且内数值只读
init
上下文
C# 9
用于属性的赋值器,替代 set 关键字,表示该属性的赋值只出现在实例化的时候
int
预定义
C# 1
数据类型 System.Int32 的别名
into
上下文
C# 3
用于 LINQ 查询表达式的 select、group 及 join 从句之中,接续迭代
interface
预定义
C# 1
用于声明接口类型
internal
预定义
C# 1
用于声明对象的访问级别只在项目里可见;也可配合 protected 构成 protected internal 级别
is
预定义
C# 1
用于数据类型校验(在模式匹配里称为类型模式)
上下文
C# 7
用于声明模式、var 模式、解构模式和常量模式
上下文
C# 8
用于弃元模式、属性模式、对位模式和递归模式
上下文
C# 9
用于括号模式、关系模式和逻辑模式
上下文
C# 10
用于拓展属性模式
上下文
C# 11
用于列表和分片模式
join
上下文
C# 3
用于 LINQ 查询表达式的 join-in-on-equals 从句,表示连接集合
let
上下文
C# 3
用于 LINQ 查询表达式的 let 从句,表示临时变量定义
lock
预定义
C# 1
用于 lock 语句的声明
long
预定义
C# 1
数据类型 System.Int64 的别名
managed
上下文
C# 9
用于函数指针声明,表示函数指针只用于 C# 代码(托管代码)
method
特性
C# 1
用于表示特性用于一个方法
module
特性
C# 2
用于表示特性用于一个模块
nameof
上下文
C# 6
用于表示 nameof 表达式,获取成员自己的字符串信息
namespace
预定义
C# 1
用于声明命名空间块
上下文
C# 9
用于声明命名空间指令
new
预定义
C# 1
用于 new 语句实例化对象
预定义
C# 1
用于声明在成员或嵌套类型上,表示成员或类型与基类型某可见成员或嵌套类型重名,需完全覆盖
上下文
C# 2
用于泛型参数约束,表示该类型参数具有 public 修饰的无参构造器
上下文
C# 9
用于隐式 new 语句
nint
上下文
C# 9
用于兼容 C/C++ 的不定长整型,C# 里翻译成 System.IntPtr 类型
not
上下文
C# 9
用于取反一个模式
notnull
上下文
C# 8
用于泛型约束,表示泛型参数不能是可空类型
nuint
上下文
C# 9
用于兼容 C/C++ 的不定长整型,C# 里翻译成 System.UIntPtr 类型
null
预定义
C# 1
用于表示所有可空数据类型的默认数值
object
预定义
C# 1
数据类型 System.Object 的别名,是所有非指针数据类型的最终基类型
on
上下文
C# 3
用于 LINQ 查询表达式的 join-in-on-equals 从句,带出等值连接的条件
operator
预定义
C# 1
用于声明转换器和运算符重载
or
上下文
C# 9
用于析取模式匹配
orderby
上下文
C# 3
用于 LINQ 查询表达式的 orderby 从句,用于排序
out
预定义
C# 1
用于修饰参数,表示该参数作为输出参数使用
上下文
C# 4
用于接口和委托类型的泛型参数,声明该泛型参数具有协变性
override
预定义
C# 1
用于重写基类型的 virtual 和 abstract 成员
param
特性
C# 1
用于表示特性用于一个参数
params
预定义
C# 1
用于修饰参数,表示该参数是一个变长数组参数
partial
上下文
C# 2
用于将类型拆分为多文件存储
上下文
C# 3
用于分离私有无返回值实例方法的声明和实现,为不同文件管理
上下文
C# 9
用于分离所有方法的声明和实现,为不同文件管理
private
预定义
C# 1
用于声明对象的访问级别只在当前类型里可见
property
特性
C# 1
用于表示特性用于一个属性
protected
预定义
C# 1
用于声明对象的访问级别只在当前类型和它的派生类型里可见
上下文
C# 7
(C# 7.2)和 private 配合构成 private protected 修饰级别,避免跨程序集的派生行为
public
预定义
C# 1
用于声明对象的访问级别是随时随地均可见
readonly
预定义
C# 1
用于修饰字段表示该字段在运行时不可修改
上下文
C# 7
(C# 7.2)修饰结构,表示所有实例成员(构造器除外)均不会修改对象内的值
上下文
C# 7
(C# 7.2)用于配合 ref 修饰过的返回值,表示对象返回一个只读引用
上下文
C# 7
(C# 7.3)用于配合 ref 修饰迭代变量,表示变量在 foreach 循环里传只读引用
上下文
C# 8
用于修饰结构的实例成员(构造器除外)表示该成员不修改对象内的值
record
上下文
C# 9
用于声明一个记录类类型
上下文
C# 10
用于声明一个记录类型,配合 struct 或 class 构成 record struct 或 record class
ref
预定义
C# 1
用于修饰参数,表示该参数是引用传递
上下文
C# 7
用于表示充当 struct 类型修饰符,表示类型只用于栈内存分配
上下文
C# 7
(C# 7.2)用于方法或属性、索引器等成员的的返回类型上,表示对象返回引用
上下文
C# 7
(C# 7.3)用于 foreach 的迭代变量,使其传引用
上下文
C# 11
用于 ref struct 类型的字段成员修饰,表示字段以引用传递
上下文
C# 13
用于泛型约束 allows ref struct,表示 ref struct 可用作泛型参数
remove
上下文
C# 1
用于事件成员的删除器声明部分
required
上下文
C# 11
用于修饰非只读属性或字段,表示它不论在实例化还是对象初始化器的时候都必须初始化
return
预定义
C# 1
用于返回结果和退出方法执行
特性
C# 1
用于表示特性用于一个返回值
上下文
C# 2
构成 yield return 语句的一部分
sbyte
预定义
C# 1
数据类型 System.SByte 的别名
scoped
上下文
C# 11
用于修饰 ref struct 类型的参数或临时变量,限制该值只能在当前声明范围内可用
上下文
C# 11
用于修饰传引用的参数或临时变量,限制该引用只能在当前声明范围内可用
上下文
C# 12
允许显式给出,修饰一些本身就隐式 scoped 了的临时变量
上下文
C# 12
用于修饰包含引用字段的 ref struct 类型,限制该类型的值只能在当前声明范围内可用
上下文
C# 12
用于放在 ref struct 类型的参数或临时变量的 ref 修饰符之后,限制该类型的引用只能在当前声明范围内可用
sealed
预定义
C# 1
用于修饰类型或成员,表示该类型或成员不再提供派生和重写操作
select
上下文
C# 3
用于 LINQ 查询表达式的 select 从句,获取迭代映射的结果
set
上下文
C# 1
用于属性的取值器声明部分
short
预定义
C# 1
数据类型 System.Int16 的别名
sizeof
预定义
C# 1
用于计算非托管类型的内存占用字节数
stackalloc
预定义
C# 1
用于声明一个栈内存数组
上下文
C# 8
用于表示一个 Span<T> 和 ReadOnlySpan<T> 的表达式
static
预定义
C# 1
用于修饰成员,表示成员是静态的
上下文
C# 2
用于修饰类,表示类只存储静态成员,且不提供无参实例构造器,且不实现接口
上下文
C# 8
用于表示本地函数不捕获变量
上下文
C# 9
用于表示 Lambda 和匿名函数不捕获变量
上下文
C# 11
用于接口里的抽象或虚成员,表示该成员为静态抽象或静态虚成员
string
预定义
C# 1
数据类型 System.String 的别名
struct
预定义
C# 1
用于声明一个结构
上下文
C# 2
用于泛型约束,表示一个泛型参数必须是一个值类型
上下文
C# 10
配合 record 关键字,用于声明记录结构
上下文
C# 13
用于泛型约束 allows ref struct,表示 ref struct 可用作泛型参数
switch
预定义
C# 1
用于声明 switch 语句
上下文
C# 8
用于声明 switch 表达式
this
预定义
C# 1
表示类型里的默认实例成员,在执行过程期间替代为别的实例
预定义
C# 1
表示调用当前类型的别的构造器
上下文
C# 3
修饰参数,表示该方法为扩展方法,该参数实例表示该方法的逻辑调用实例
throw
预定义
C# 1
用于抛出异常实例,以及抛出隐式异常实例
true
预定义
C# 1
表示 bool 类型的其中一个常量
try
预定义
C# 1
用于 try-catch、try-catch-finally 和 try-finally 语句的声明
type
特性
C# 1
用于表示特性用于一个类型
typeof
预定义
C# 1
用于获取类型自身的反射信息
typevar
特性
C# 2
用于表示特性用于一个泛型参数
uint
预定义
C# 1
数据类型 System.UInt32 的别名
ulong
预定义
C# 1
数据类型 System.UInt64 的别名
unchecked
预定义
C# 1
表示表达式或块内代码在运算超出数据范围时候旋转数值
unmanaged
上下文
C# 7
用于 unmanaged 泛型约束,表示泛型参数可使用指针运算
上下文
C# 9
用于函数指针声明,表示指向的函数为非托管代码里存储的函数
unsafe
预定义
C# 1
表示块内代码可以使用不安全代码(指针等行为)
ushort
预定义
C# 1
数据类型 System.UInt16 的别名
using
预定义
C# 1
用于声明 using 块,表示使用完后自动内存释放
预定义
C# 1
用于声明 using 指令导入命名空间
上下文
C# 2
用于 using 别名指令
上下文
C# 6
用于 using static 指令和 using static 别名指令
上下文
C# 8
用于 await using 修饰,表示变量使用异步释放
上下文
C# 9
用于声明 using 变量
上下文
C# 10
用于 global using、global using static 指令以及别名指令
value
上下文
C# 1
用于属性和事件里各个访问器,并提供参数值
var
上下文
C# 3
用于隐式类型声明
上下文
C# 7
用于声明模式匹配
virtual
预定义
C# 1
用于实例成员可让派生类型重写逻辑
上下文
C# 11
用于配合 static 构成 static virtual 组合修饰,在接口里声明虚静态成员
void
预定义
C# 1
用于方法、属性赋值取值器等成员不返回任何实例,同时也是 System.Void 的别名
volatile
预定义
C# 1
用于修饰字段,表示字段经常被多个线程修改,以禁用 JIT 对变量数据计算的优化,避免优化后多线程里无法成功赋值
when
上下文
C# 6
用于异常筛选 catch-when 语句
上下文
C# 7
用于 switch 语句里进行模式匹配时带上条件
上下文
C# 8
用于 switch 表达式里进行模式匹配时带上条件
where
上下文
C# 2
用于泛型参数的泛型约束声明
上下文
C# 3
用于 LINQ 查询表达式的 where 从句,表示筛选迭代对象
while
预定义
C# 1
用于 while 循环和 do-while 循环的声明
with
上下文
C# 9
用于记录类类型的 with 表达式过程
上下文
C# 10
用于任何结构和匿名类型的 with 表达式过程
yield
上下文
C# 2
用于迭代器模式下构成 yield break 和 yield return 语句,产生迭代数值
_
上下文
C# 7
用于放弃成员的返回值,以及值元组的成员使用弃元
上下文
C# 7
用于声明模式、var 模式和解构模式的弃元
上下文
C# 8
用于递归模式(包括对位模式和属性模式)声明对象的弃元
上下文
C# 8
用于 switch 表达式的默认情况(也叫弃元模式)
上下文
C# 9
用于 Lambda 表达式,表示 Lambda 里的参数在方法体里不使用
上下文
C# 10
用于扩展属性模式的弃元
上下文
C# 11
用于列表模式和分片模式的弃元
__arglist
未归档
C# 1
用于兼容 C/C++ 里的变长参数表列
__makeref
未归档
C# 1
用于获取一个值类型对象的引用,用以表示数据类型自身的赋值取值过程
__reftype
未归档
C# 1
用于表示一个值类型引用的实际数据类型
__refvalue
未归档
C# 1
用于表示一个值类型引用的实际数据数值
__fieldof
反汇编
C# 1
用于表示反射字段的基本信息,返回值类型为 FieldInfo
__methodof
反汇编
C# 1
用于表示反射方法的基本信息,返回值类型为 MethodInfo
__methodptr
反汇编
C# 1
用来表示一个委托类型实际引用的方法的地址
最后更新于