C#参考手册
C#关键字速查
| 关键字 | 说明 |
|---|---|
abstract |
声明抽象类或抽象成员 |
as |
安全类型转换,失败返回 null |
base |
访问基类成员 |
bool |
布尔类型(true/false) |
break |
跳出循环或 switch |
byte |
8 位无符号整数(0~255) |
case |
switch 分支标签 |
catch |
捕获异常 |
char |
Unicode 字符(16 位) |
checked |
启用溢出检查 |
class |
声明类 |
const |
声明常量 |
continue |
跳过本次循环迭代 |
decimal |
128 位高精度十进制数 |
default |
switch 默认分支或类型默认值 |
delegate |
声明委托类型 |
do |
do-while 循环 |
double |
64 位双精度浮点数 |
else |
if 的否决分支 |
enum |
声明枚举 |
event |
声明事件 |
explicit |
声明显式类型转换运算符 |
extern |
声明外部实现的方法 |
false |
布尔字面量假 |
finally |
try 的最终执行块 |
fixed |
固定变量地址(unsafe) |
float |
32 位单精度浮点数 |
for |
for 循环 |
foreach |
遍历集合 |
goto |
无条件跳转 |
if |
条件判断 |
implicit |
声明隐式类型转换运算符 |
in |
泛型逆变 / foreach 迭代 / 参数修饰符 |
int |
32 位有符号整数 |
interface |
声明接口 |
internal |
程序集内可见 |
is |
类型模式匹配 |
lock |
互斥锁 |
long |
64 位有符号整数 |
namespace |
声明命名空间 |
new |
创建实例 / 隐藏基类成员 / 泛型约束 |
null |
空引用字面量 |
object |
所有类型的基类 |
operator |
声明运算符重载 |
out |
输出参数 / 泛型协变 |
override |
重写基类虚成员 |
params |
可变参数 |
private |
私有访问 |
protected |
受保护访问 |
public |
公有访问 |
readonly |
只读字段 |
ref |
引用传递 |
return |
返回值 |
sbyte |
8 位有符号整数 |
sealed |
密封类 / 密封重写 |
short |
16 位有符号整数 |
sizeof |
获取类型大小(unsafe) |
stackalloc |
栈上分配内存(unsafe) |
static |
静态成员 |
string |
Unicode 字符串引用类型 |
struct |
声明值类型结构 |
switch |
多分支选择 |
this |
当前实例引用 / 声明索引器 / 扩展方法 |
throw |
抛出异常 |
true |
布尔字面量真 |
try |
异常捕获块 |
typeof |
获取 Type 对象 |
uint |
32 位无符号整数 |
ulong |
64 位无符号整数 |
unchecked |
禁用溢出检查 |
unsafe |
不安全上下文 |
ushort |
16 位无符号整数 |
using |
引入命名空间 / 资源释放 |
virtual |
声明虚成员 |
void |
无返回值 |
volatile |
标记字段不被优化缓存 |
while |
while 循环 |
格式说明符速查
| 说明符 | 说明 | 示例 |
|---|---|---|
D / d |
十进制整数 | 42.ToString("D5") → "00042" |
F / f |
固定小数位 | 3.14.ToString("F2") → "3.14" |
C / c |
货币 | 1234.5.ToString("C") → "¥1,234.50" |
P / p |
百分比 | 0.156.ToString("P1") → "15.6 %" |
E / e |
科学记数法 | 12345.ToString("E2") → "1.23E+004" |
X / x |
十六进制 | 255.ToString("X") → "FF" |
G / g |
常规(自动选择最紧凑形式) | 3.14.ToString("G") → "3.14" |
常用字符串方法表
| 方法 | 说明 | 示例 |
|---|---|---|
Length |
获取字符数 | "abc".Length → 3 |
Substring(start) |
从起始位置截取到末尾 | "hello".Substring(2) → "llo" |
Substring(start, len) |
截取指定长度子串 | "hello".Substring(1, 3) → "ell" |
Replace(old, new) |
替换所有匹配 | "aabb".Replace("a","c") → "ccbb" |
Split(separators) |
按分隔符拆分为数组 | "a,b,c".Split(',') → ["a","b","c"] |
Trim() |
去除首尾空白 | " hi ".Trim() → "hi" |
Contains(value) |
是否包含子串 | "hello".Contains("ell") → true |
IndexOf(value) |
查找子串首次索引 | "abcabc".IndexOf("bc") → 1 |
LastIndexOf(value) |
查找子串末次索引 | "abcabc".LastIndexOf("bc") → 4 |
ToUpper() |
转大写 | "Abc".ToUpper() → "ABC" |
ToLower() |
转小写 | "AbC".ToLower() → "abc" |
StartsWith(value) |
是否以指定字符串开头 | "hello".StartsWith("he") → true |
EndsWith(value) |
是否以指定字符串结尾 | "hello".EndsWith("lo") → true |
PadLeft(total) |
左侧填充空格到指定长度 | "5".PadLeft(3) → " 5" |
PadRight(total) |
右侧填充空格到指定长度 | "5".PadRight(3) → "5 " |
Remove(start) |
移除从起始位置到末尾的字符 | "hello".Remove(2) → "he" |
Remove(start, len) |
移除指定长度字符 | "hello".Remove(1,2) → "hlo" |
Insert(start, value) |
在指定位置插入字符串 | "ab".Insert(1,"X") → "aXb" |
IsNullOrEmpty(s) |
是否为 null 或空字符串 | string.IsNullOrEmpty(null) → true |
IsNullOrWhiteSpace(s) |
是否为 null 或纯空白 | string.IsNullOrWhiteSpace(" ") → true |
Join(sep, arr) |
用分隔符连接数组 | string.Join("-",["a","b"]) → "a-b" |
Concat(a, b) |
拼接字符串 | string.Concat("x","y") → "xy" |
Format(fmt, args) |
格式化字符串 | string.Format("{0}+{1}={2}",1,2,3) → "1+2=3" |
Compare(a, b) |
比较两个字符串顺序 | string.Compare("a","b") → -1 |
Equals(a, b) |
是否相等 | string.Equals("a","a") → true |
Clone() |
返回同一字符串引用 | "s".Clone() → "s" |
Copy(s) |
创建字符串副本(已过时) | string.Copy("s") → "s" |
ToCharArray() |
转为字符数组 | "abc".ToCharArray() → ['a','b','c'] |
集合类型对比表
| 集合类型 | 命名空间 | 访问方式 | 排序 | 是否动态 | 典型用途 |
|---|---|---|---|---|---|
Array |
System |
索引 O(1) | 可排序 | 否 | 固定大小、高性能数据存储 |
List<T> |
System.Collections.Generic |
索引 O(1) | 可排序 | 是 | 通用动态列表 |
Dictionary<K,V> |
System.Collections.Generic |
键 O(1) | 无 | 是 | 键值对映射与快速查找 |
Queue<T> |
System.Collections.Generic |
FIFO | 无 | 是 | 任务调度、消息队列 |
Stack<T> |
System.Collections.Generic |
LIFO | 无 | 是 | 撤销操作、表达式求值 |
HashSet<T> |
System.Collections.Generic |
哈希查找 | 无 | 是 | 去重、集合运算 |
LinkedList<T> |
System.Collections.Generic |
节点遍历 | 无 | 是 | 频繁头尾插入删除 |
访问修饰符对比表
| 修饰符 | 同类 | 子类(同程序集) | 非子类(同程序集) | 子类(不同程序集) | 非子类(不同程序集) |
|---|---|---|---|---|---|
public |
✅ | ✅ | ✅ | ✅ | ✅ |
private |
✅ | ❌ | ❌ | ❌ | ❌ |
protected |
✅ | ✅ | ❌ | ✅ | ❌ |
internal |
✅ | ✅ | ✅ | ❌ | ❌ |
protected internal |
✅ | ✅ | ✅ | ✅ | ❌ |
private protected |
✅ | ✅ | ❌ | ❌ | ❌ |
常用命名空间速查
| 命名空间 | 用途 | 常用类 |
|---|---|---|
System |
基础类型与核心功能 | Console, Math, Environment, Convert, DateTime |
System.IO |
文件与流操作 | File, Directory, Path, StreamReader, StreamWriter, FileStream |
System.Collections |
非泛型集合 | ArrayList, Hashtable, Queue, Stack |
System.Collections.Generic |
泛型集合 | List<T>, Dictionary<K,V>, Queue<T>, Stack<T>, HashSet<T>, LinkedList<T> |
System.Linq |
LINQ 查询 | Enumerable, Queryable |
System.Text |
文本处理与编码 | StringBuilder, Encoding, UTF8Encoding |
System.Text.Json |
JSON 序列化 | JsonSerializer, JsonDocument, JsonNode |
System.Threading |
线程与同步 | Thread, Mutex, Semaphore, Monitor, CancellationToken |
System.Threading.Tasks |
异步与并行任务 | Task, Task<T>, Parallel, ValueTask |
System.Reflection |
类型反射 | Assembly, Type, MethodInfo, PropertyInfo, FieldInfo |
System.Text.RegularExpressions |
正则表达式 | Regex, Match, Group, Capture |
System.Diagnostics |
诊断与进程管理 | Process, Debug, Trace, Stopwatch |
C#版本特性一览
| 版本 | 年份 | 关键特性 |
|---|---|---|
| C# 1.0 | 2002 | 类、结构体、接口、委托、事件、运算符重载、索引器、属性、Attribute |
| C# 2.0 | 2005 | 泛型、分部类、匿名方法、可空类型、迭代器、协变与逆变 |
| C# 3.0 | 2007 | LINQ、Lambda 表达式、扩展方法、隐式类型(var)、匿名类型、自动属性、表达式树 |
| C# 4.0 | 2010 | 动态绑定(dynamic)、命名参数、可选参数、泛型协变与逆变 |
| C# 5.0 | 2012 | async/await、调用方信息(CallerMemberName 等) |
| C# 6.0 | 2015 | 字符串插值、null 条件运算符、表达式体成员、using static、异常筛选器、自动属性初始化器 |
| C# 7.0 | 2017 | 模式匹配、元组、本地函数、out 变量、数字分隔符、ref 返回 |
| C# 7.1 | 2017 | async Main、default 字面量、推断元组名称 |
| C# 7.2 | 2017 | in 参数、ref 结构体、只读结构体、Span<T> |
| C# 7.3 | 2018 | 模式匹配增强、元组比较、栈上分配数组 |
| C# 8.0 | 2019 | 可空引用类型、范围与索引、异步流、默认接口方法、模式匹配增强、using 声明 |
| C# 9.0 | 2020 | 记录类型(record)、init 属性、顶级语句、模式匹配增强、目标类型 new、协变返回 |
| C# 10.0 | 2021 | 全局 using、文件范围命名空间、record struct、常量字符串插值、lambda 改进 |
| C# 11.0 | 2022 | 原始字符串字面量、required 属性、泛型属性、列表模式、UTF-8 字符串字面量 |
| C# 12.0 | 2023 | 主构造函数、集合表达式、内联数组、ref 结构体泛型支持、别名任意类型 |



