当前位置: 首页 > news >正文

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 PrintInfo<T>(T info) { Console.WriteLine($"输出内容:{info},类型:{typeof(T)}"); } // 调用 PrintInfo(100); // 适配int PrintInfo("C#泛型"); // 适配string PrintInfo(3.14); // 适配double

1.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:有返回值委托 Func<int, int> add = a => a + 10; Console.WriteLine(add(5)); // 输出15

3.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#从入门到进阶的必经之路,看似独立,实际项目中经常组合使用:比如多线程读写文件 + 泛型封装工具 + 事件通知读写结果,是非常经典的业务场景。

http://www.jsqmd.com/news/1163708/

相关文章:

  • 桌面快捷键操作_desktop-hotkey
  • Unity URP自定义RenderPass的原理、实战、调优与避坑
  • 初探SAM3(一) :SAM3 TensorRT 部署踩坑记录
  • Solidity 调试工具链实战:Tenderly、Hardhat Console 与 Foundry 堆栈追踪对比
  • Github二步验证(2FA)开启及本地纯离线应用接入验证教程
  • 搬家寄大件包裹,哪个物流最便宜? - 快递物流资讯
  • 铁岭GEO系统贴牌服务商靠谱源头厂商综合实力推荐TOP3:本地合伙人选择源头厂商的关键判断维度 - 小随科技
  • Obsidian Excel插件:一站式解决笔记中电子表格管理的专业方案
  • 郑州江诗丹顿回收价格查询及各大回收平台实测排行(2026年7月最新数据) - 尊奢回收二奢平台
  • 原来四川这些口碑好的设备搬迁企业,究竟好在哪里?
  • 当色彩空间成为工程选择:sRGB、Display P3 与 OKLCH 在前端工程中的取舍
  • nullifier 没和 note 绑死,隐私池就会被双花
  • Web3 开发者效率工具排行榜:从编码到部署的一站式工具链选型指南
  • 3步解决Cursor AI使用限制:免费体验Pro功能的完整指南
  • 广州欧米茄回收价格查询和靠谱回收平台实测排行(2026年7月最新数据) - 天价名表回收平台
  • 《唤醒你的AI同事:WorkBuddy从零上手》007:初始配置向导
  • 郑州城市职业学院参编清华教材背后的育人突围之路
  • 无锡惠山金价高位出手攻略,三大连锁黄金回收门店实地测评 - 福金阁黄金回收
  • 浩卡联盟(号卡联盟)一级账号怎么注册?一篇讲透为什么越来越多人要升一级? - 流量卡代理招商
  • Cursor Cli 入门指南(Claude Code 深度用户快速迁移)
  • 5G 广播这条路,2026 年走到了哪一步——美国规划商用、德国试点续期,一份全球节奏盘点
  • 智能运维时代,运维人再也不用无休止熬夜值班
  • 2026年石嘴山 GEO系统贴牌服务商靠谱源头厂商综合实力推荐TOP3:本地合伙人如何选对源头工厂,搭建长期AI搜索业务线? - 小随科技
  • 应用打包公证_packaging-notarization
  • 核心设计模式:AXI 握手与背压实现
  • 欧拉函数小证明
  • 跳表实现与性能剖析:为什么 Redis 选它而不是红黑树
  • 2026年呼伦贝尔GEO系统贴牌服务商靠谱源头厂商综合实力推荐:草原城市如何选择AI搜索时代的OEM合作路径? - 小随科技
  • 2026山东美国留学机构哪家好?济南青岛家长重点比较十家更靠谱 - 环球新视野
  • 南京宝珀回收价格查询及靠谱回收平台实测排行(2026年7月最新) - 嘉价奢侈品回收平台