☰
关于集合,泛型,异常。窗口与文件的总结
2026/10/8 7:11:29 网站建设 项目流程

时间。20260907

一、学习概述 通过这一阶段对 C# 基础知识和面向对象编程的学习。从最开始学习变量、数据类型、条件判断和循环,到后面学习集合、异常处理、泛型、Windows Forms 窗口以及文件操作,我逐渐理解了一个完整程序是如何从数据处理发展到用户界面,再到数据保存的。 在学习过程中,我也通过停车场管理系统进行了综合练习。停车场项目涉及车辆信息的保存、查询、修改、删除、入场、出场和收费等功能,同时还使用了 DataGridView、TextBox、Button、FileStream、StreamWriter 等控件和类。通过这个项目,

① 创建文件流 →FileStream fs=new FileStream(tbFileAddress.Text,FileMode.Creat);

② 创建读写器 →StreamWriter sw=new 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 等。其中 List<T> 是学习和实际使用中非常常见的一种集合。List 可以保存多个相同类型的数据,而且可以根据需要动态增加和删除元素。

List<Car> cars = new List<Car>();

这里定义了一个保存 Car 对象的集合。添加车辆可以使用 Add 方法: cars.Add(car); 删除数据可以使用 Remove 或 RemoveAt,查询数据可以使用循环或者 LINQ 等方式完成。 集合的优点是使用方便、长度可以动态变化,而且能够配合对象进行管理。例如停车场中有很多 Car 对象,就可以使用 List<Car> 保存所有车辆。程序中的

添加、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# 中非常重要的一个概念。

泛型可以让程序设计更加灵活,同时减少重复代码。

例如: List<int> nums = new List<int>(); List<string> names = new List<string>(); List<Car> cars = new List<Car>(); 虽然这些 List 保存的数据类型不同,但是使用的 List 结构基本相同。

通过泛型,可以在定义集合的时候指定具体的数据类型。 泛型中的 T 可以理解为一个暂时没有确定的类型。

例如: class MyClass<T> { public T Data; } 当使用 MyClass<int> 时,T 就代表 int;当使用 MyClass<string> 时,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、面向对象设计、分层开发以及更复杂的项目结构,从而提高自己的编程能力和解决实际问题的能力。

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

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

立即咨询