编辑
2025-09-28
C#
00

摘要

在C#中,我们可以使用System.IO命名空间提供的类和方法来操作CSV(逗号分隔值)文件。以下是一个通用的CSV文件操作类的示例代码,详细说明了如何实现常见的读取和写入CSV文件的功能。

正文

CSV文件操作通用类

C#
public class CsvFile { private string filePath; private char delimiter; public CsvFile(string filePath, char delimiter = ',') { this.filePath = filePath; this.delimiter = delimiter; } public List<string[]> ReadAll(System.Text.Encoding encoding) { List<string[]> data = new List<string[]>(); try { using (StreamReader reader = new StreamReader(filePath, encoding) { while (!reader.EndOfStream) { string line = reader.ReadLine(); string[] values = line.Split(delimiter); data.Add(values); } } } catch (Exception ex) { Console.WriteLine("Error: " + ex.Message); } return data; } public void WriteAll(List<string[]> data) { try { using (StreamWriter writer = new StreamWriter(filePath)) { foreach (string[] values in data) { string line = string.Join(delimiter.ToString(), values); writer.WriteLine(line); } } } catch (Exception ex) { Console.WriteLine("Error: " + ex.Message); } } }
编辑
2025-09-28
C#
00

摘要

状态模式是一种行为型设计模式,它允许一个对象在其内部状态改变时改变其行为。状态模式将对象的行为封装在不同的状态类中,使得对象可以根据其内部状态的变化而改变其行为,而无需在对象中使用大量的条件语句。

正文

应用场景

状态模式适用于以下场景:

  • 当一个对象的行为取决于其内部状态,并且该行为在运行时可能发生变化时。
  • 当一个类有多个状态,且这些状态之间可以相互转换时。
  • 当需要在运行时动态地添加新的状态时。

状态模式可以帮助我们将复杂的条件逻辑分散到不同的状态类中,使得代码更加清晰、可维护和可扩展。

编辑
2025-09-28
C#
00

摘要

访问者模式是一种行为型设计模式,它允许你在不修改对象结构的情况下定义新的操作。通过将操作封装在访问者对象中,可以在不改变对象结构的情况下,为对象结构中的每个元素提供新的操作。

正文

应用场景

访问者模式适用于以下情况:

  • 当一个对象结构包含多种类型的对象,并且希望对这些对象进行不同的操作时。
  • 当需要为一个对象结构添加新的操作,但不希望修改每个对象的类时。
  • 当对象结构中的对象类很少发生变化,但经常需要执行不同的操作时。
编辑
2025-09-28
C#
00

摘要

策略模式是一种行为型设计模式,它允许在运行时选择算法的行为。通过将算法封装在独立的策略类中,客户端可以根据需要动态地切换算法,而无需修改使用算法的代码。

正文

结构

策略模式由三个主要组件组成:

  • 环境(Context):环境对象通过一个策略接口与客户端进行交互。它持有一个策略对象,并在需要时调用策略对象的方法。
  • 策略接口(Strategy Interface):策略接口定义了算法的通用方法。
  • 具体策略类(Concrete Strategies):具体策略类实现了策略接口,提供了不同的算法实现。
编辑
2025-09-28
C#
00

摘要

备忘录模式是一种行为设计模式,它允许在不破坏封装的情况下捕获和恢复对象的内部状态。该模式通过将对象的状态保存到备忘录对象中,并在需要时从备忘录中恢复状态,实现了对象状态的保存和恢复。

正文

结构

备忘录模式由以下几个角色组成:

  • 发起人(Originator):负责创建备忘录对象,并可以使用备忘录对象来恢复其内部状态。
  • 备忘录(Memento):存储发起人对象的内部状态。
  • 管理者(Caretaker):负责保存和恢复备忘录对象。