C# 泛型、文件、委托事件与多线程

C# 泛型、文件、委托事件与多线程
C# 四大核心基础一.1. 泛型Generic核心作用延迟类型指定、复用代码、避免装箱拆箱、类型安全核心语法T 占位符分类泛型方法泛型类泛型接口泛型约束基类约束、接口约束、值类型/引用类型约束、无参数构造函数约束常用场景通用工具类、集合封装、数据转换工具2. 文件操作File/Stream核心命名空间System.IO核心类File静态类快速读写小文件FileStream文件流大文件分段读写StreamReader/StreamWriter文本文件读写Directory文件夹创建、删除、遍历常用操作创建、删除、复制、移动、读取文本、写入文本、遍历文件注意事项文件释放、using释放流、路径大小写、权限问题3. 委托与事件Delegate/Event委托方法的容器、方法指针、实现方法传参自定义委托内置委托Func有返回值、Action无返回值、Predicate返回bool多播委托绑定多个方法依次执行事件委托的安全封装、外部只能订阅/取消、不能直接赋值核心作用解耦、观察者模式、回调通知场景按钮点击、数据更新通知、异步回调4. 多线程Thread核心概念进程、线程、主线程、子线程、并发、并行常用实现方式Thread原生线程自由度高ThreadPool线程池复用线程Task推荐轻量化、支持回调、取消线程问题线程安全、资源争抢、死锁解决方案lock锁、volatile、线程同步适用场景耗时操作文件读写、网络请求、批量计算避免UI卡顿三、知识点通俗详解 极简实战代码1. 泛型一套代码适配所有类型1.1 什么是泛型大白话泛型就是给类型“占坑”定义代码时不指定具体数据类型调用的时候再指定实现代码复用同时保证类型安全。解决痛点不用为int、string、自定义类分别写重复代码避免频繁装箱拆箱性能更高。1.2 极简泛型案例// 泛型方法通用打印工具 public static void PrintInfoT(T info) { Console.WriteLine($输出内容{info}类型{typeof(T)}); } // 调用 PrintInfo(100); // 适配int PrintInfo(C#泛型); // 适配string PrintInfo(3.14); // 适配double1.3 核心总结T 只是占位符可换成任意字母T、U、V泛型在编译时确定类型类型安全无装箱拆箱配合约束可以限制T的类型范围避免误用2. 文件操作本机文件读写万能工具2.1 核心认知C#所有文件操作都基于System.IO命名空间日常开发90%的场景只需掌握快速读写、流读写、文件夹操作。小文件用File静态类大文件用FileStream分段读写避免内存溢出。2.2 极简实战文本文件读写using System.IO; // 1. 写入文件不存在则创建存在则覆盖 File.WriteAllText(test.txt, Hello C# 文件操作); // 2. 读取文件 string content File.ReadAllText(test.txt); Console.WriteLine(文件内容 content); // 3. 追加内容 File.AppendAllText(test.txt, \n追加的新内容);2.3 关键注意点所有流对象必须用using包裹自动释放资源相对路径默认在程序运行目录绝对路径写完整地址读写大文件禁止一次性读取必须分段读取3. 委托与事件实现代码解耦和回调3.1 通俗理解委托方法的“容器”可以把方法当作参数传递事件委托的安全版封装专门用来做通知、回调禁止外部随意赋值覆盖核心价值解耦发布者不需要知道订阅者是谁触发事件即可通知所有订阅方法。3.2 内置委托极简使用不用自定义// Action无返回值委托 Action sayHello () Console.WriteLine(Hello 委托); sayHello(); // Func有返回值委托 Funcint, int add a a 10; Console.WriteLine(add(5)); // 输出153.3 事件极简案例// 定义事件 public event Action UpdateEvent; // 订阅事件 UpdateEvent () Console.WriteLine(数据更新了); // 触发事件 UpdateEvent?.Invoke();4. 多线程让程序同时干多件事4.1 通俗理解默认程序只有一条主线程所有代码串行执行多线程可以开启子线程让耗时操作读写文件、网络请求后台执行不阻塞主线程常见UI不卡顿。4.2 推荐用法Task 多线程最简using System.Threading.Tasks; Console.WriteLine(主线程开始); // 开启子线程执行耗时任务 Task.Run(() { for (int i 0; i 5; i) { Console.WriteLine($子线程执行{i}); Task.Delay(500).Wait(); } }); Console.WriteLine(主线程结束);4.3 核心避坑点多线程共享变量会出现资源争抢必须加lock锁保证线程安全避免频繁创建销毁线程优先使用Task/线程池子线程不能直接操作UI控件四、四大知识点核心场景总结面试/开发必记知识点核心用途高频场景泛型代码复用、类型安全通用工具类、集合封装、DTO转换文件操作本地文件读写管理日志记录、配置文件读写、批量文件处理委托事件解耦、回调通知界面事件、数据监听、业务回调多线程异步并发、提升效率耗时任务、批量处理、防止程序卡顿五、结尾以上四大知识点是C#从入门到进阶的必经之路看似独立实际项目中经常组合使用比如多线程读写文件 泛型封装工具 事件通知读写结果是非常经典的业务场景。