C# 知识点整理(泛型 / IO / 委托 / LINQ / 事件 / 多线程) 一、泛型核心作用参数化类型一套代码适配多种类型编译时类型校验消除装箱拆箱提升性能与复用性。使用范围泛型类、泛型方法、泛型接口、泛型索引器多泛型参数T,U。泛型约束 where必记struct只能值类型class只能引用类型new()类型必须有无参构造多约束写在末尾父类 / 接口约束T 必须继承指定类、实现接口配套排序接口 IComparableT实现CompareTo方法返回负数 / 0 / 正数控制升、降序。协变 out、逆变 inout 仅作返回值in 仅作参数解决泛型类型转换兼容。二、文件与 IO 流命名空间using System.IO1. 文件 / 目录四大类静态File、Directory适合单次快速操作实例FileInfo、DirectoryInfo频繁读取文件属性优先使用路径绝对路径D:\\xxx、相对路径操作前判断Exists防报错2. 基础文件操作FileCreate/Delete/Move/Copy/ReadAllText/WriteAllText Directory创建 / 删除 / 递归删除文件夹、遍历子文件。3. 四大流FileStream字节流通用读写图片、视频、所有文件需手动转字节数组BufferedStream缓冲流大文件复制提速减少磁盘 IOStreamReader/StreamWriter文本专用直接操作字符串支持按行读写规范所有流使用完必须Close()释放资源Flush强制写入缓存4. 递归递归遍历全部文件夹文件递归实现斐波那契、累加求和。三、委托、Lambda、LINQ1. 自定义 delegate方法容器存储方法地址多播委托绑定多个方法、-移除。2. 系统内置委托无需手写 delegateAction无返回值支持 0~16 个参数Func带返回值最后一个泛型为返回类型3. Lambda 表达式简化匿名委托单参数可省略括号单行代码省略{}与 return。4. 委托传参将逻辑方法作为参数传入实现代码解耦集合过滤、删除核心原理。5. LINQ 链式依托 Func常用Where筛选、Distinct去重、OrderBy排序、ToList转回集合、ForEach遍历。四、事件 event本质对委托封装发布订阅模式UI、通知场景专用。委托 vs 事件 外部只能订阅、-取消仅定义类内部可触发安全性更高。标准写法自定义委托绑定事件事件?.Invoke()空安全触发系统标准EventHandler(object sender, EventArgs e)无需自定义委托自定义 add/remove 访问器可拦截订阅操作。规范事件命名 OnXXX多播仅保留最后一个方法返回值。五、多线程 Threadusing System.Threading1. 基础概念进程独立程序内存容器线程进程内执行单元并发抢占 CPU。2. 线程基础操作创建构造传入方法 / LambdaStart()启动Thread.Sleep(ms)线程休眠Join()阻塞等待线程执行完毕IsBackground后台线程前台线程全部结束后台强制终止启动前设置Priority线程优先级仅提高 CPU 获取概率不保证顺序3. 线程安全 lock多线程操作共享数据会错乱lock 互斥锁同一时间仅一个线程执行临界代码锁对象推荐私有 object禁止值类型。4. 补充拓展ThreadPool线程池复用线程减少创建销毁开销Task 为.NET 现代多线程方案嵌套锁易产生死锁。六、注意点文件操作判断路径存在捕获 IO 异常流必须关闭释放资源。泛型约束多条件时new()放最后。委托、事件、LINQ 三者配合是集合筛选、界面通知核心方案。多线程共享数据必须加锁区分前后线程避免程序提前退出。