附录A-C#关键字速查表
2026/8/15 12:48:51 网站建设 项目流程

附录 A:C# 关键字速查表

完整的 C# 关键字列表,按类别分类,包含用途说明和简单示例

本附录目录

  • 访问修饰符
  • 类型声明
  • 成员修饰符
  • 方法参数修饰符
  • 命名空间与引用
  • 控制流语句
  • 异常处理
  • 类型转换与检查
  • 字面量与特殊值
  • 泛型
  • 上下文关键字
  • 内存与指针
  • 预处理指令
  • 查询关键字
  • 运算符关键字
  • 内置类型别名
  • 特殊用途关键字
  • 版本特性标记
  • 使用建议

访问修饰符

关键字用途示例
public公共访问,任何代码都可访问public class MyClass { }
private私有访问,仅当前类内可访问private int _count;
protected受保护访问,当前类及派生类可访问protected void Calculate() { }
internal内部访问,同一程序集内可访问internal class Helper { }
protected internal受保护内部访问,同一程序集或派生类可访问protected internal string Name;
private protected私有受保护访问,同一程序集内的派生类可访问(C# 7.2+)private protected int _value;
file文件范围访问,仅当前文件可访问(C# 11+)file class LocalHelper { }

类型声明

关键字用途示例
class定义类class Person { }
struct定义结构体(值类型)struct Point { public int X, Y; }
interface定义接口interface ILogger { void Log(string message); }
enum定义枚举enum Status { Active, Inactive }
record定义记录类型(不可变引用类型,C# 9.0+)record Person(string Name, int Age);
record struct定义记录结构体(不可变值类型,C# 10+)record struct Point(int X, int Y);
delegate定义委托delegate void EventHandler(object sender);

成员修饰符

关键字用途示例
static静态成员,属于类型而非实例public static int Count;
const常量,编译时确定的不可变值const double PI = 3.14159;
readonly只读字段,只能在声明或构造函数中赋值readonly string _name;
volatile易失字段,防止编译器优化(多线程场景)volatile bool _isRunning;
virtual虚方法,可被派生类重写public virtual void Draw() { }
abstract抽象成员,必须在派生类中实现public abstract void Process();
override重写基类的虚方法或抽象方法public override void Draw() { }
sealed密封类(不可继承)或密封方法(不可重写)public sealed class FinalClass { }
new隐藏基类成员public new void Display() { }
partial部分类型定义,可跨多个文件partial class Customer { }
required必需成员,必须在对象初始化时设置(C# 11+)public required string Name { get; set; }

方法参数修饰符

关键字用途示例
ref引用传递,调用前必须初始化void Increment(ref int value) { value++; }
out输出参数,方法内必须赋值bool TryParse(string s, out int result) { }
in只读引用传递,避免复制大型结构体(C# 7.2+)void Process(in LargeStruct data) { }
params可变参数,接受任意数量的参数void Print(params string[] messages) { }

命名空间与引用

关键字用途示例
namespace定义命名空间namespace MyApp.Services { }
using引入命名空间或定义别名using System; using Alias = System.Text;
extern声明外部程序集别名extern alias OldVersion;

控制流语句

关键字用途示例
if条件判断if (x > 0) { }
elseif 的否定分支if (x > 0) { } else { }
switch多分支选择switch (x) { case 1: break; }
caseswitch 的分支case 1: Console.WriteLine("One"); break;
defaultswitch 的默认分支default: Console.WriteLine("Other"); break;
while前置条件循环while (i < 10) { i++; }
do后置条件循环do { i++; } while (i < 10);
for计数循环for (int i = 0; i < 10; i++) { }
foreach遍历集合foreach (var item in list) { }
break退出循环或 switchwhile (true) { break; }
continue跳过本次循环for (int i = 0; i < 10; i++) { if (i == 5) continue; }
goto无条件跳转(不推荐使用)goto Label; Label: Console.WriteLine("Here");
return返回方法结果并退出方法return 42;

异常处理

关键字用途示例
try定义可能抛出异常的代码块try { RiskyOperation(); }
catch捕获异常catch (Exception ex) { }
finally无论是否异常都会执行的代码块finally { Cleanup(); }
throw抛出异常throw new InvalidOperationException();
when异常过滤器(C# 6.0+)catch (HttpException ex) when (ex.StatusCode == 404) { }

类型转换与检查

关键字用途示例
as安全类型转换,失败返回 nullvar obj = value as string;
is类型检查,返回 boolif (obj is string s) { }
typeof获取类型的 Type 对象Type t = typeof(int);
sizeof获取值类型的字节大小int size = sizeof(int); // 4

字面量与特殊值

关键字用途示例
null空引用string s = null;
true布尔真值bool flag = true;
false布尔假值bool flag = false;
default类型的默认值int x = default; // 0

泛型

关键字用途示例
where泛型约束class List<T> where T : class { }

泛型约束类型

  • where T : class- T 必须是引用类型
  • where T : struct- T 必须是值类型
  • where T : new()- T 必须有无参构造函数
  • where T : BaseClass- T 必须继承自 BaseClass
  • where T : IInterface- T 必须实现 IInterface
  • where T : U- T 必须是 U 或从 U 派生

上下文关键字(仅在特定上下文有特殊含义)

关键字用途示例
add定义事件访问器(添加订阅)event EventHandler Click { add { } remove { } }
remove定义事件访问器(移除订阅)同上
get定义属性的获取访问器public int Age { get; set; }
set定义属性的设置访问器同上
init定义仅初始化访问器(C# 9.0+)public string Name { get; init; }
value属性或索引器设置器中的隐式参数set { _value = value; }
var隐式类型局部变量var list = new List<int>();
dynamic动态类型,运行时绑定dynamic obj = GetObject();
async异步方法修饰符async Task<int> GetDataAsync() { }
await等待异步操作完成var result = await GetDataAsync();
yield迭代器返回元素yield return item;
global全局命名空间别名global::System.Console.WriteLine();
alias引用外部程序集别名extern alias GridV1;
fromLINQ 查询表达式的起始from item in list
selectLINQ 查询投影select item.Name
whereLINQ 查询过滤条件where item.Age > 18
orderbyLINQ 查询排序orderby item.Name
groupLINQ 查询分组group item by item.Category
joinLINQ 查询连接join order in orders on item.Id equals order.ItemId
intoLINQ 查询延续group item by item.Category into g
letLINQ 查询临时变量let total = item.Price * item.Quantity
ascendingLINQ 升序排序orderby item.Name ascending
descendingLINQ 降序排序orderby item.Name descending
onLINQ join 条件on item.Id equals order.ItemId
equalsLINQ join 相等比较同上
byLINQ group 分组键group item by item.Category
nameof获取符号的字符串名称(C# 6.0+)string name = nameof(variable);
when模式匹配守卫(C# 7.0+)case int n when n > 0:
and模式匹配逻辑与(C# 9.0+)is > 0 and < 100
or模式匹配逻辑或(C# 9.0+)is "red" or "blue"
not模式匹配逻辑非(C# 9.0+)is not null
with记录类型的非破坏性修改(C# 9.0+)var person2 = person1 with { Age = 30 };
record记录类型声明(C# 9.0+)record Person(string Name, int Age);
init仅初始化属性(C# 9.0+)public string Name { get; init; }
nint本机大小整数(C# 9.0+)nint ptr = 0;
nuint无符号本机大小整数(C# 9.0+)nuint size = 100;
unmanaged泛型约束:非托管类型(C# 7.3+)where T : unmanaged
notnull泛型约束:非空类型(C# 8.0+)where T : notnull
managed上下文关键字(C# 预留)-
scoped限制引用的生命周期(C# 11+)scoped Span<int> span = stackalloc int[10];
file文件范围类型(C# 11+)file class Helper { }
required必需成员(C# 11+)public required string Name { get; set; }

内存与指针(仅在不安全代码中)

关键字用途示例
unsafe允许不安全代码(指针操作)unsafe { int* ptr = &value; }
fixed固定对象防止垃圾回收移动fixed (int* ptr = &array[0]) { }
stackalloc在栈上分配内存Span<int> span = stackalloc int[10];

预处理指令(以 # 开头,编译时处理)

指令用途示例
#if条件编译#if DEBUG
#else条件编译否定分支#else
#elif条件编译的 else if#elif RELEASE
#endif结束条件编译#endif
#define定义预处理符号#define DEBUG
#undef取消定义预处理符号#undef DEBUG
#warning生成编译警告#warning "This is deprecated"
#error生成编译错误#error "Not supported"
#line修改编译器的行号和文件名#line 100 "MyFile.cs"
#region定义可折叠区域#region Properties
#endregion结束可折叠区域#endregion
#pragma编译器指令#pragma warning disable CS0168
#nullable可空引用类型指令(C# 8.0+)#nullable enable

查询关键字(LINQ 查询语法)

关键字用途示例
from指定数据源和范围变量from item in collection
where过滤条件where item.Price > 100
select投影结果select item.Name
group分组group item by item.Category
into延续查询group item by item.Category into g
orderby排序orderby item.Price descending
join连接join order in orders on item.Id equals order.ItemId
let引入范围变量let total = item.Price * item.Quantity
ascending升序orderby item.Name ascending
descending降序orderby item.Name descending
onjoin 条件on item.Id equals order.ItemId
equalsjoin 相等比较同上
bygroup 分组键by item.Category
in指定集合from item in collection

运算符关键字

关键字用途示例
new创建对象或数组new Person()
checked启用溢出检查checked { int x = int.MaxValue + 1; }
unchecked禁用溢出检查unchecked { int x = int.MaxValue + 1; }

内置类型别名

关键字对应 .NET 类型字节大小
boolSystem.Boolean1
byteSystem.Byte1
sbyteSystem.SByte1
charSystem.Char2
decimalSystem.Decimal16
doubleSystem.Double8
floatSystem.Single4
intSystem.Int324
uintSystem.UInt324
nintSystem.IntPtr平台相关
nuintSystem.UIntPtr平台相关
longSystem.Int648
ulongSystem.UInt648
shortSystem.Int162
ushortSystem.UInt162
objectSystem.Object-
stringSystem.String-
voidSystem.Void-

特殊用途关键字

关键字用途示例
this引用当前实例this.Name = name;
base引用基类成员base.ToString();
lock线程同步锁lock (obj) { }
event声明事件public event EventHandler Click;
operator运算符重载public static Point operator +(Point a, Point b) { }
implicit隐式类型转换public static implicit operator int(MyType x) { }
explicit显式类型转换public static explicit operator int(MyType x) { }

版本特性标记

以下是不同 C# 版本引入的关键字和特性:

C# 6.0 (2015)

  • nameof
  • when(异常过滤器)

C# 7.0 (2017)

  • when(模式匹配)
  • out变量声明
  • 元组支持

C# 7.2 (2017)

  • in参数修饰符
  • ref readonly
  • private protected访问修饰符

C# 7.3 (2018)

  • unmanaged泛型约束

C# 8.0 (2019)

  • notnull泛型约束
  • 可空引用类型(#nullable
  • switch表达式
  • using声明

C# 9.0 (2020)

  • record
  • init访问器
  • with表达式
  • andornot模式匹配
  • nintnuint

C# 10 (2021)

  • record struct
  • global using
  • 文件范围命名空间

C# 11 (2022)

  • required成员
  • file类型修饰符
  • scoped关键字

C# 12 (2023)

  • 主构造函数
  • 集合表达式

使用建议

  1. 避免使用goto:会降低代码可读性,几乎所有场景都有更好的替代方案
  2. 谨慎使用unsafe:不安全代码绕过类型安全检查,仅在性能关键场景使用
  3. 优先使用var:当类型明显时使用var可以提高代码简洁性
  4. 使用nameof:重构时自动更新字符串,避免硬编码
  5. 启用可空引用类型:在项目中启用#nullable enable减少空引用异常

快速查找:使用 Ctrl+F 搜索关键字名称即可快速定位到详细说明。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询