关于集合,泛型,异常。窗口与文件的总结
时间。20260907一、学习概述 通过这一阶段对 C# 基础知识和面向对象编程的学习。从最开始学习变量、数据类型、条件判断和循环到后面学习集合、异常处理、泛型、Windows Forms 窗口以及文件操作我逐渐理解了一个完整程序是如何从数据处理发展到用户界面再到数据保存的。 在学习过程中我也通过停车场管理系统进行了综合练习。停车场项目涉及车辆信息的保存、查询、修改、删除、入场、出场和收费等功能同时还使用了 DataGridView、TextBox、Button、FileStream、StreamWriter 等控件和类。通过这个项目① 创建文件流 →FileStream fsnew FileStream(tbFileAddress.Text,FileMode.Creat);② 创建读写器 →StreamWriter swnew StreamWriter(fs);③ 读/写操作 →//这个重点string line;while ((line sr.ReadLine()) ! null){string[] data line.Split(|);if (data.Length 6){Cars c new Cars();c.CarNo data[0];c.InTime DateTime.Parse(data[1]);c.OutTime DateTime.Parse(data[2]);c.ParkTime double.Parse(data[3]);c.Money decimal.Parse(data[4]);c.Paid bool.Parse(data[5]);cars.Add(c);}}④ 关闭读写器 →sw.Close();⑤ 关闭文件流---fs.Close二、集合 集合能够更加方便地保存和管理一组数据。在实际开发中我们经常需要同时保存很多个对象例如停车场系统中需要保存多辆汽车的信息这时候集合就非常有用。 C# 中常见的集合有数组、List、Dictionary 等。其中 ListT 是学习和实际使用中非常常见的一种集合。List 可以保存多个相同类型的数据而且可以根据需要动态增加和删除元素。ListCar cars new ListCar();这里定义了一个保存 Car 对象的集合。添加车辆可以使用 Add 方法 cars.Add(car); 删除数据可以使用 Remove 或 RemoveAt查询数据可以使用循环或者 LINQ 等方式完成。 集合的优点是使用方便、长度可以动态变化而且能够配合对象进行管理。例如停车场中有很多 Car 对象就可以使用 ListCar 保存所有车辆。程序中的添加、array list.Add删除、array.Remove()修改、foreach (string array in array)查询Console.Write等功能都可以围绕这个集合进行。 通过学习集合我认识到程序中的数据不能只依靠一个变量保存而应该根据数据的数量和特点选择合适的数据结构。三、异常处理 程序运行过程中可能出现各种无法预料的问题。例如用户输入的数据格式错误、文件不存在、文件无法打开、数组下标超出范围等。如果这些问题没有进行处理程序可能会直接停止运行。C# 中使用try、catch、finally进行异常处理。基本结构如下try { // 可能出现异常的代码 }catch (Exception ex) { // 异常处理 }finally { // 最终执行的代码 }try 中放置可能产生异常的程序代码catch 用来捕获异常finally 中的代码通常无论是否发生异常都会执行。例如文件操作过程中如果用户输入了错误的文件地址程序打开文件时就可能出现异常。这时候可以使用 try-catch 捕获异常并通过 MessageBox 提示用户而不是让程序直接崩溃。异常处理让我认识到一个完整的程序不仅要考虑正常情况下能够运行还要考虑错误情况下应该怎么办。合理使用异常处理可以提高程序的稳定性和用户体验。四、泛型 泛型是 C# 中非常重要的一个概念。泛型可以让程序设计更加灵活同时减少重复代码。例如 Listint nums new Listint(); Liststring names new Liststring(); ListCar cars new ListCar(); 虽然这些 List 保存的数据类型不同但是使用的 List 结构基本相同。通过泛型可以在定义集合的时候指定具体的数据类型。 泛型中的 T 可以理解为一个暂时没有确定的类型。例如 class MyClassT { public T Data; } 当使用 MyClassint 时T 就代表 int当使用 MyClassstring 时T 就代表 string。泛型的主要优点是代码复用性强、类型安全而且可以减少类型转换。以前可能需要把数据定义成 object再进行类型转换而使用泛型之后可以直接指定需要的数据类型。通过学习泛型我进一步理解了面向对象程序设计中的“代码复用”思想。泛型不是简单地减少代码而是让同一种程序结构能够适用于不同的数据类型。五、Windows Forms 窗口Windows Forms 是 C# 中用于开发 Windows 桌面应用程序的一种技术。通过 Windows Forms可以使用窗口、按钮、文本框、标签、表格等控件制作图形化程序。在停车场管理系统中我使用了 Form 作为主窗口并添加了 Button、Label、TextBox 和 DataGridView 等控件。例如 - Button执行添加、删除、修改、查询、入场、出场和收费等操作。- Label显示提示信息例如“车辆信息”。- TextBox输入车辆信息或文件地址。- DataGridView以表格形式显示车辆数据。- Form作为整个程序的主窗口。Windows Forms 的一个重要特点是事件驱动。例如用户点击按钮后会触发按钮的 Click 事件private void btnAdd_Click(object sender, EventArgs e) { // 执行操作 }这说明 Windows Forms 程序和普通控制台程序有所不同。程序并不是简单地从第一行执行到最后一行而是等待用户操作然后根据用户的操作执行相应事件。 DataGridView 也让我认识到了“数据绑定”的概念。程序中的集合保存数据而 DataGridView 负责把数据显示给用户。通过刷新绑定可以让数据发生变化后及时显示在窗口中。六、文件操作 文件操作是本阶段学习中非常重要的一部分。程序运行时的数据一般保存在内存中程序关闭以后数据可能会消失。因此需要通过文件将数据保存下来。C# 中可以使用 FileStream、StreamWriter 和 StreamReader 进行文件操作。FileStream 主要负责建立程序与文件之间的数据流。例如FileStream fs new FileStream( tbFileAddress.Text, FileMode.Create);StreamWriter 可以向文件中写入文字 StreamWriter sw new StreamWriter(fs); sw.WriteLine(车辆信息);完成操作后需要关闭对象 sw.Close(); fs.Close();读取文件时可以使用StreamReader StreamReader sr new StreamReader(fs);string str sr.ReadLine();在停车场项目中我使用文件保存车辆信息例如 CarNo|InTime|OutTime|ParkTime|Money|Paid每辆车的信息按照一定格式保存到文件中。程序再次启动时可以读取文件中的数据然后重新加载到集合中最后显示到 DataGridView。 文件操作的学习让我理解了数据持久化的基本概念,简单来说就是让程序的数据能够保存下来而不是只存在于程序运行期间。八、学习体会通过这一阶段的学习我最大的收获是认识到编程不仅仅是记住代码更重要的是理解程序的结构和各部分之间的关系。集合解决的是“如何保存多个数据”的问题泛型解决的是“如何让代码适用于不同类型”的问题异常处理解决的是“程序出现错误时怎么办”的问题Windows Forms 解决的是“如何让用户通过窗口操作程序”的问题文件操作解决的是“如何把程序数据保存下来”的问题。在实际编程过程中我也遇到过很多问题例如控件名称不一致、变量没有声明、按钮事件没有连接、DataGridView 没有正确绑定、文件读取出现异常等。通过不断修改和调试我逐渐认识到程序出现问题时不能只看错误提示而应该检查变量、控件名称、事件、数据绑定以及程序执行流程。总的来说这一阶段的学习让我从简单的 C# 语法逐渐进入到实际项目开发。尤其是停车场管理系统让我把课堂中学习的知识应用到了一个完整的程序中。以后继续学习 C# 时我还需要进一步掌握数据库、LINQ、面向对象设计、分层开发以及更复杂的项目结构从而提高自己的编程能力和解决实际问题的能力。

相关新闻

宠物领养系统|基于java + vue微信小程序宠物领养系统(源码+数据库+文档)

宠物领养系统|基于java + vue微信小程序宠物领养系统(源码+数据库+文档)

微信小程序宠物领养系统 目录 基于springboot vue微信小程序宠物领养系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取: 基于springboot vue微信小程序宠物领养系统 …

2026/10/10 3:57:27 阅读更多 →
蛋糕商城系统|基于java+ vue蛋糕商城系统(源码+数据库+文档)

蛋糕商城系统|基于java+ vue蛋糕商城系统(源码+数据库+文档)

蛋糕商城系统 目录 基于springboot vue蛋糕商城系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取: 基于springboot vue蛋糕商城系统 一、前言 博主介绍:✌…

2026/10/8 7:11:37 阅读更多 →
一文详解Spring 事务失效场景

一文详解Spring 事务失效场景

前提:Spring 事务底层依靠 AOP 动态代理,只有代理对象调用方法才会触发事务增强;同时事务生效需要满足数据库引擎支持事务(InnoDB,MyISAM 不支持)。注解:Transactional1. 方法不是 public&#…

2026/10/9 16:40:11 阅读更多 →

最新新闻

flex+bison实现小型编译器:词法分析、语法分析与语义检查全流程

flex+bison实现小型编译器:词法分析、语法分析与语义检查全流程

简介:这是一套面向计算机专业本科生的编译原理课程设计完整资料,覆盖词法分析、LL(1)预测分析、LR(0)/SLR(1)语法分析、四元式生成与汇编代码生成,并附带小型编译器实现及课程设计报告,可满足从实验到报告提交的全流程需求。压缩包…

2026/10/12 10:03:54 阅读更多 →
知识蒸馏+增量学习:目标检测模型如何越训越强不忘旧类

知识蒸馏+增量学习:目标检测模型如何越训越强不忘旧类

简介:本资源为基于知识蒸馏的目标检测模型增量深度学习方法的Python源码,面向人工智能、计算机视觉方向的高校学生、教师及企业研发人员,尤其适合正在做毕设、课程设计或算法进阶的学习者,用于解决目标检测模型在增量学习中易遗忘…

2026/10/12 10:03:54 阅读更多 →
AI Agent记忆管理实战:四层架构与可验证落地指南

AI Agent记忆管理实战:四层架构与可验证落地指南

1. 为什么“记忆”是AI Agent最常被忽略的致命短板 我第一次在某跨平台系统里跑通一个带多轮对话的Agent时,兴奋地给团队演示“它能记住用户刚说过的偏好”。结果第三轮对话刚过,它就把用户明确说过的“不要推荐咖啡因饮料”忘得一干二净,转头…

2026/10/12 10:03:54 阅读更多 →
AI Agent工程实践指南:从决策判断到故障防御

AI Agent工程实践指南:从决策判断到故障防御

1. 这不是又一本“AI科普书”,而是一份给动手者的Agent开发手记你点开这个标题,大概率不是想听“AI Agent是什么”这种教科书定义——毕竟搜索引擎里铺天盖地的“概念图解”“三层架构图”“RAGLLMAgent”已经够多。真正卡住你的,是那几个深夜…

2026/10/12 10:03:54 阅读更多 →
GEO优化全指南:从大模型内容偏好到AI引用实战

GEO优化全指南:从大模型内容偏好到AI引用实战

1. GEO 不是 SEO 的换皮:AI 回答正在重写流量分配规则 过去一年里,我发现一个特别明显的趋势:身边越来越多的人问"为什么我在百度上排名第一,用户却说搜不到我"。不是搜不到,而是用户不再逐条点蓝色链接了。…

2026/10/12 10:03:54 阅读更多 →
基于模型压缩的识别算法Python源码:蒸馏与剪枝实战

基于模型压缩的识别算法Python源码:蒸馏与剪枝实战

简介:这份资源是面向高校毕业设计与深度学习入门者的模型压缩识别算法Python源码包,聚焦知识蒸馏与剪枝两类主流压缩技术,帮助读者在有限算力下完成识别模型的轻量化改造与对比实验。包内共185个文件,以79个py源码为核心&#xff…

2026/10/12 10:02:52 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →