news 2026/7/27 7:32:11

C#三大核心实战:字典、文件操作与委托全面解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C#三大核心实战:字典、文件操作与委托全面解析

一、字典(Dictionary)

1.核心特性

  • 键值对集合Dictionary<TKey, TValue>,键必须唯一,值可重复

  • 快速查找:基于哈希表实现,键的查找接近O(1)

  • 非线程安全:多线程需使用ConcurrentDictionary或手动同步

2.常用操作

// 创建与初始化 var dict = new Dictionary<string, int>(); var dict2 = new Dictionary<string, string>() { {"A", "Apple"} }; // 添加/更新 dict["key1"] = 10; // 直接赋值(新增或覆盖) dict.Add("key2", 20); // 仅新增,键存在则异常 // 访问 int value = dict["key1"]; // 键不存在抛异常 dict.TryGetValue("key1", out int val); // 安全访问 // 遍历 foreach(var kvp in dict) // KeyValuePair遍历 foreach(var key in dict.Keys) // 仅遍历键 // 删除 dict.Remove("key1"); // 返回是否成功 dict.Clear(); // 清空

3.重要方法

  • ContainsKey():检查键是否存在(比TryGetValue略快)

  • Keys/Values:获取键或值的集合

  • 自定义键类型需重写GetHashCode()Equals()


二、文件读取

1.System.IO常用类

用途
File静态方法,一次性操作小文件
FileStream低级字节流,大文件/二进制
StreamReader/Writer文本文件,按行/字符
BinaryReader/Writer二进制文件,特定数据类型

2.常见读取模式

// 1. 一次性读取(小文件) string text = File.ReadAllText("path.txt"); string[] lines = File.ReadAllLines("path.txt"); // 2. 流式读取(大文件/内存优化) using (var reader = new StreamReader("file.txt")) { string line; while ((line = reader.ReadLine()) != null) { // 逐行处理 } } // 3. 异步读取(推荐) string text = await File.ReadAllTextAsync("file.txt"); // 4. 二进制读取 using (var reader = new BinaryReader(File.OpenRead("data.bin"))) { int num = reader.ReadInt32(); double d = reader.ReadDouble(); }

3.关键要点

  • 始终使用using语句确保资源释放

  • 路径处理:使用Path.Combine()拼接路径

  • 异常处理:捕获IOExceptionUnauthorizedAccessException

  • 编码指定StreamReader默认UTF-8,中文需注意编码


三、委托(Delegate)

1.核心概念

  • 类型安全的函数指针:定义方法签名,可绑定具体方法

  • 多播委托:可关联多个方法(+=/-=操作)

  • 基础类型DelegateMulticastDelegate→ 自定义委托

2.委托演进

// 1. 传统委托(C# 1.0) delegate void MyDelegate(string msg); // 声明委托类型 MyDelegate del = new MyDelegate(MethodName); // 2. 泛型委托(C# 2.0+) Action<string> actionDel = MethodName; // 无返回值 Func<string, int> funcDel = MethodName; // 有返回值 Predicate<string> predDel = MethodName; // 返回bool // 3. 匿名方法与Lambda(C# 3.0+) Action<string> lambdaDel = (s) => Console.WriteLine(s); Func<int, int> square = x => x * x;

3.事件模式

// 定义事件 public event EventHandler<MyEventArgs> MyEvent; // 触发事件 protected virtual void OnMyEvent(MyEventArgs e) { MyEvent?.Invoke(this, e); // 线程安全的调用 } // 订阅事件 obj.MyEvent += HandleEvent; obj.MyEvent -= HandleEvent;

4.重点特性

  • 协变/逆变(C# 4.0):Func<out TResult>Action<in T>

  • 闭包:Lambda可捕获外部变量(注意生命周期)

  • 异步委托async与委托结合使用


四、综合应用示例

// 读取配置文件到字典 var config = new Dictionary<string, string>(); foreach (var line in File.ReadLines("config.txt")) { var parts = line.Split('='); if (parts.Length == 2) config[parts[0]] = parts[1]; } // 使用委托处理字典数据 Action<KeyValuePair<string, string>> printAction = kvp => Console.WriteLine($"{kvp.Key}: {kvp.Value}"); foreach (var item in config) printAction(item);

五、最佳实践

  1. 字典:优先用TryGetValue避免KeyNotFoundException

  2. 文件:大文件用流式读取,始终用using和异常处理

  3. 委托:事件用?.Invoke()空检查,Lambda避免过度捕获

  4. 性能:字典预设容量,文件读取用异步,委托避免频繁分配

这些是C#开发中最常用且必须掌握的核心技术,熟练掌握后能解决大部分数据管理和事件驱动编程需求。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/26 8:14:04

基于STM32的智能温室大棚环境监控与管理系统

基于STM32的智能温室大棚环境监控与管理系统设计与实现摘要本文设计并实现了一种基于STM32F103C8T6单片机的智能温室大棚环境监控与管理系统。该系统集环境参数监测、智能控制决策与远程管理功能于一体&#xff0c;可实时采集环境温湿度&#xff08;0-50℃&#xff0c;0-100%RH…

作者头像 李华
网站建设 2026/7/26 9:49:28

阻塞队列:生产者-消费者模式

阻塞队列&#xff1a;生产者-消费者模式的优雅解决方案一、阻塞队列的诞生背景在多线程编程的世界里&#xff0c;生产者-消费者模式是最经典、最常见的并发模式之一。想象这样一个场景&#xff1a;一个线程负责生成数据&#xff08;生产者&#xff09;&#xff0c;另一个线程负…

作者头像 李华
网站建设 2026/7/25 5:51:36

AI播客震撼体验:量子物理对话竟由AI生成,声音真实到起鸡皮疙瘩

那个让我起鸡皮疙瘩的AI播客&#xff0c;彻底改变了我对声音的想象 昨天开车回家的路上&#xff0c;堵在三环动弹不得。百无聊赖中&#xff0c;我点开了一个朋友转给我的播客链接。节目里是一男一女两个主播&#xff0c;正在热火朝天地讨论一篇关于量子物理的论文。 男主播声…

作者头像 李华
网站建设 2026/7/26 16:13:34

深蓝词库转换:输入法词库互转的终极解决方案

深蓝词库转换&#xff1a;输入法词库互转的终极解决方案 【免费下载链接】imewlconverter ”深蓝词库转换“ 一款开源免费的输入法词库转换程序 项目地址: https://gitcode.com/gh_mirrors/im/imewlconverter 还在为不同输入法之间的词库不兼容而烦恼吗&#xff1f;深蓝…

作者头像 李华
网站建设 2026/7/27 21:21:37

如何快速掌握在线图表编辑器:新手完整入门指南

还在为技术文档的可视化表达而烦恼吗&#xff1f;在线图表制作工具已经成为现代工作必备的效率神器。通过文本驱动图表的方式&#xff0c;您可以轻松创建专业级可视化内容&#xff0c;而实时预览编辑功能让创作过程更加直观高效。 【免费下载链接】mermaid-live-editor Locatio…

作者头像 李华
网站建设 2026/7/27 18:34:40

百度网盘下载提速终极方案:第三方客户端实战指南

还在为百度网盘的龟速下载而抓狂&#xff1f;官方客户端的限速策略让无数用户头疼不已。今天&#xff0c;我将为你详细介绍基于BaiduPCS-Web的百度网盘第三方客户端解决方案&#xff0c;帮助你突破速度限制&#xff0c;享受极速下载体验。 【免费下载链接】baidupcs-web 项目…

作者头像 李华