IO 流、委托、事件 一、 IO 流数据传输通道1. IO 流核心基础概念本质Stream流程序与外部设备之间数据传输的通道核心作用完成内存、磁盘、网络之间的数据读写交互。2. 字节流底层基类 Stream操作二进制 byte []字节流是所有 IO 操作的底层基础直接操作二进制字节无编码概念支持任意格式文件分为 4 大类FileStream 文件流作用读写本地磁盘二进制文件适用场景图片、视频、exe 程序、压缩包、任意非文本 / 文本文件核心方法Read()、Write()、ReadByte()、WriteByte()。BufferedStream 缓冲流作用为其他流增加缓冲区减少频繁磁盘 IO 访问大幅提升读写性能使用方式包裹 FileStream、网络流搭配使用不单独创建。MemoryStream 内存流作用数据读写仅操作内存全程不读写磁盘适用场景临时二进制缓存、图片内存处理、接口字节中转。NetworkStream 网络流作用基于 TCP/IP 协议传输原始字节搭配组件Socket、TcpClient、TcpListener用于网络通信收发数据。3. 字符流文本专用封装编码自动转换字符流属于上层包装流底层依然依赖字节流专门处理文本自动封装UTF8/GBK编码转换仅两类StreamReader 字符读取器底层内部包装Stream字节流自动处理文字编码用途读取 txt 文档、日志文本、纯文本接口返回常用方法ReadLine()逐行读取、ReadToEnd()一次性读取全部文本。StreamWriter 字符写入器底层包装字节流自动编码转换用途写入文本日志、生成 txt 文件、控制台输出封装常用方法Write()无换行写入、WriteLine()带换行写入。4. 字节流 vs 字符流 核心区分要点面试高频字节流万能处理所有文件操作byte[]字节数组无编码转换逻辑字符流仅限纯文本文件自动转换char/string字符串内置编码处理层级顺序字节流是底层基础缓冲流、字符流都是上层包装流必须依赖字节流创建。二、C# 委托方法的容器回调底层核心委托是 C# 实现回调、多播、Lambda 的基础本质是一种存储 / 传递方法的特殊数据类型思维导图分为 4 大模块1. 自定义委托 delegate定义规则使用delegate关键字修饰是没有方法体的方法类型本质等同于自定义数据类型可以像变量一样存储、传递方法基础三步用法声明自定义委托类型规定方法返回值与参数委托变量赋值已有普通方法委托变量 方法名调用委托变量执行绑定的方法委托变量()。2. 匿名方法Lambda 表达式无需单独定义方法直接用代码块赋值给委托简化开发基础格式() { 代码块 };简写规则单个入参可省略括号x { Console.WriteLine(x); }单行返回逻辑可省略return与大括号x x * 2使用场景直接赋值给委托变量省去单独定义方法的冗余代码。3. 多播委托一个委托变量可以绑定多个方法实现批量执行拼接语法追加绑定方法、-移除已绑定方法执行规则触发时按照绑定顺序依次执行全部方法面试坑点带返回值的多播委托最终仅返回最后一个绑定方法的返回值前面方法返回值会被丢弃。4. 系统内置通用委托无需手写 delegate框架内置两套泛型委托开发 90% 场景无需自定义 delegateAction 系列无返回值支持 0~16 个泛型入参示例ActionListstringFunc 系列带返回值最后一个泛型参数固定代表返回值示例Funcint, bool传入 int返回 bool三、C# 事件安全封装的委托消息通知标准方案事件底层完全基于委托封装是实现订阅发布模式、窗体控件通知的标准方案。1. 事件底层本质底层对委托做一层安全封装依托委托能力实现核心价值提供安全的订阅 / 触发机制限制外部直接修改委托变量仅允许绑定 / 解绑方法。2. 事件三大核心操作事件仅允许外部通过、-操作底层对应访问器订阅绑定事件 方法/委托底层对应add访问器d.OnShow d.Test;取消订阅事件 - 方法/委托底层对应remove访问器d.OnShow - d.Test1;触发规则仅事件所在类内部可以直接调用触发外部无法手动执行安全性远高于原生委托。3. 多订阅多播特性事件天然支持多播和多播委托行为一致同一个事件可以绑定任意多个方法触发事件时严格按照绑定先后顺序依次执行所有订阅方法典型场景窗体按钮 Click 事件同时绑定多个执行逻辑。四、委托 vs 事件安全层面委托变量外部可直接赋值覆盖全部方法事件仅允许/-无法外部清空、覆盖使用场景委托多用于内部回调、方法传参事件用于对外暴露消息通知。调用权限委托任意地方都能调用执行事件只能在定义类内部触发。五、完整知识体系总结IO 流底层字节流处理二进制上层字符流处理文本缓冲流优化性能所有文件、网络、内存读写都基于 Stream委托存储传递方法的数据类型支持 Lambda、多播内置 Action/Func 简化开发事件封装委托的安全订阅模型项目中消息通知、UI 交互标准实现方案。