C# 核心知识点总结:泛型、字典、异常、IO流、进程与线程
2026/8/3 1:59:19 网站建设 项目流程

C# 核心知识点总结:泛型、字典、异常、IO流、进程与线程

在C#开发中,泛型、字典、异常处理、IO流、进程和线程是日常开发高频使用、面试必考的核心基础知识点。这些知识点覆盖了数据存储、代码容错、文件操作、多任务处理四大核心场景。本文将系统梳理各知识点的核心原理、用法、优缺点及实战场景,搭配可运行代码示例,帮助大家彻底吃透基础,夯实C#开发功底。

一、C# 泛型(Generic)—— 类型复用的核心

1. 核心概念

泛型是C#提供的类型参数化技术,允许我们定义类、方法、接口时不指定具体数据类型,在调用时再传入实际类型。简单来说:泛型就是“模板”,一次定义,多种类型复用

泛型的核心作用:解决值类型装箱拆箱损耗、避免重复代码、保证类型安全。

2. 核心优势

  • 类型安全:编译时校验类型,杜绝类型转换异常

  • 性能高效:无需装箱、拆箱操作,避免值类型性能损耗

  • 代码复用:一套代码适配多种数据类型,无需重载多个方法

3. 常用泛型场景+代码示例

(1)泛型方法

适用于通用工具方法,适配任意数据类型

// 泛型方法:获取数组最大值,适配所有数值类型 public static T GetMax<T>(T[] arr) where T : IComparable<T> { T max = arr[0]; foreach (var item in arr) { if (item.CompareTo(max) > 0) max = item; } return max; } // 调用 int intMax = GetMax(new int[] { 1, 3, 5 }); double doubleMax = GetMax(new double[] { 1.2, 3.4, 2.1 });

(2)泛型约束

通过where限制泛型类型范围,避免非法类型传入,常用约束:值类型、引用类型、接口、无参数构造函数等。

(3)泛型集合

日常最常用的List<T>Dictionary<TKey,TValue>均为泛型集合,替代非泛型的 ArrayList、Hashtable。

4. 总结

泛型是C#集合、框架通用方法的底层核心,只要是通用、多类型适配的场景,优先使用泛型,杜绝重复代码和装箱损耗。

二、Dictionary 字典——键值对高效存储容器

1. 核心概念

Dictionary<TKey, TValue>是C#专属的泛型键值对集合,基于哈希表实现,以「唯一键Key、对应值Value」的形式存储数据,是查询效率最高的集合之一。

2. 核心特性

  • Key 唯一且不可重复,Value 可重复、可空

  • 增、删、查时间复杂度:O(1),效率远高于 List 遍历查询

  • 无序存储(C#7.0+ 有序字典可使用 OrderedDictionary)

  • 键值类型固定,类型安全,无装箱拆箱

3. 常用操作代码示例

// 1. 初始化字典 Dictionary<string, int> scoreDict = new Dictionary<string, int>() { { "张三", 95 }, { "李四", 88 } }; // 2. 添加元素(重复Key会报错) scoreDict.Add("王五", 92); // 3. 安全查询(避免Key不存在报错) if (scoreDict.TryGetValue("张三", out int score)) { Console.WriteLine($"张三的分数:{score}"); } // 4. 遍历字典 foreach (var item in scoreDict) { Console.WriteLine($"姓名:{item.Key},分数:{item.Value}"); } // 5. 删除元素 scoreDict.Remove("李四");

4. 适用场景与对比

  • 适用场景:根据唯一标识快速查询数据、映射关系存储(ID-名称、账号-信息)、数据去重

  • 对比List:List适合有序遍历、下标访问;Dictionary适合按键快速查询

三、C# 异常处理——程序容错的核心机制

1. 核心概念

异常是程序运行时出现的非预期错误(数组越界、空引用、文件不存在、格式错误等),C# 提供try-catch-finally-throw机制,用于捕获异常、处理错误、保证程序不崩溃

2. 核心关键字

  • try:包裹可能出现异常的代码

  • catch:捕获指定类型异常,编写容错逻辑

  • finally:无论是否报错,都会执行(用于释放资源)

  • throw:主动抛出异常,向上层传递错误信息

3. 分层异常处理示例

try { // 可能报错的代码 string str = null; Console.WriteLine(str.Length); // 空引用异常 } catch (NullReferenceException ex) { // 精准捕获空引用异常 Console.WriteLine($"空引用错误:{ex.Message}"); } catch (Exception ex) { // 捕获所有未知异常(兜底) Console.WriteLine($"程序异常:{ex.Message}"); } finally { // 必执行:释放资源、关闭连接 Console.WriteLine("代码执行结束,释放资源"); }

4. 开发规范

  • 禁止直接捕获所有异常(catch(Exception))不做处理,避免隐藏BUG

  • 优先精准捕获具体异常,再用通用异常兜底

  • IO操作、网络请求、类型转换必须加异常处理

  • 异常用于容错,不用于控制业务逻辑

四、C# IO流——文件与数据读写操作

1. 核心概念

IO(Input/Output,输入输出)流是C# 用于内存与外部设备(文件、网络、内存)数据传输的核心机制。流是数据传输的通道,所有文件读写、数据传输都基于流实现。

核心命名空间:System.IO

2. 流的分类

  • 文件流 FileStream:底层字节流,读写所有类型文件(文本、图片、视频)

  • 文本读写流 StreamReader/StreamWriter:专门读写文本文件,简化字符操作

  • 内存流 MemoryStream:内存中读写数据,无需操作本地文件

3. 常用IO操作示例

(1)文本文件快速读写(推荐)

// 快速写入文本(覆盖原有内容) File.WriteAllText("test.txt", "Hello C# IO流"); // 快速读取文本 string content = File.ReadAllText("test.txt"); Console.WriteLine(content); // 追加内容 File.AppendAllText("test.txt", "\n追加的新内容");

(2)流式读写(大文件推荐,避免内存溢出)

// 写入大文件 using (StreamWriter sw = new StreamWriter("bigFile.txt")) { sw.WriteLine("第一行数据"); sw.WriteLine("第二行数据"); } // 读取大文件 using (StreamReader sr = new StreamReader("bigFile.txt")) { string line; // 逐行读取,节省内存 while ((line = sr.ReadLine()) != null) { Console.WriteLine(line); } }

4. 核心注意事项

  • 所有流对象必须释放资源,优先使用using语句(自动释放)

  • 小文件使用 File 静态方法,大文件使用流式读写

  • IO操作必须嵌套 try-catch,处理文件不存在、权限不足等异常

五、进程与线程——C# 多任务核心

1. 核心概念与区别

(1)进程(Process)

进程是操作系统资源分配的最小单位,是独立运行的程序实例(如浏览器、VS、QQ)。每个进程独占独立内存空间,进程之间相互隔离、互不干扰。

(2)线程(Thread)

线程是CPU调度执行的最小单位,是进程内的执行单元。一个进程至少包含一个主线程,多个线程共享进程内存资源。

2. 进程与线程核心区别

对比维度

进程

线程

资源占用

占用内存、CPU资源高,开销大

轻量级,开销极小

内存隔离

进程间内存完全隔离

同进程线程共享内存

通信难度

跨进程通信复杂

线程间通信简单

崩溃影响

单个进程崩溃不影响其他进程

一个线程崩溃,整个进程崩溃

3. C# 线程基础用法

// 1. 创建子线程 Thread thread = new Thread(() => { Console.WriteLine("子线程执行任务"); Thread.Sleep(1000); // 线程休眠1秒 }); // 2. 启动线程 thread.Start(); // 3. 等待线程执行完毕 thread.Join(); Console.WriteLine("子线程执行完成,主线程结束");

4. 进阶补充(开发常用)

  • 主线程:程序启动默认的唯一线程,负责页面渲染、主逻辑执行

  • 线程阻塞:Sleep、Join 会阻塞当前线程,避免频繁阻塞主线程(防止程序卡顿)

  • 后续迭代:实际开发中极少直接用 Thread,优先使用 Task、ThreadPool、异步 async/await(更高效、易管理)

六、知识点整体总结

本文梳理的六大C#核心知识点,构成了C#基础开发的基石,各知识点各司其职、相互配合:

  1. 泛型:解决代码复用和类型安全问题,是所有泛型集合的基础;

  2. Dictionary字典:高效键值对存储,适配高频查询、映射数据场景;

  3. 异常处理:保障程序稳定性,是所有IO、网络、复杂逻辑的必备容错机制;

  4. IO流:实现本地文件、内存数据的读写交互,是数据持久化的核心;

  5. 进程线程:实现多任务并发执行,解决程序卡顿、高效执行

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询