C#控制台修改CSV文件内容后无法保存到原文件问题求助
问题根因
你将CSV回写逻辑放在了Tabelle类的析构函数~Tabelle()中,C#的终结器(析构函数)由垃圾回收器(GC)控制执行时机,程序正常退出时不一定会触发终结器执行,因此写文件逻辑从未运行,自然不会修改原文件内容。
解决方案
推荐使用确定性执行的显式保存方案:
步骤1:给Tabelle类新增独立Save方法
把写文件逻辑从析构函数迁移到独立的公共方法中,示例代码如下:
public void Save() { string[] information = new string[liste.Count]; for (int i = 0; i < liste.Count; i++) { information[i] = $"{liste[i].Number};{liste[i].Name};{liste[i].Salary}"; } File.WriteAllLines(@"C:\Users\rbc\Desktop\csvtest\csvtest\obj\test.csv", information); } // 可删除原有的~Tabelle()析构函数逻辑,避免不可预期的执行
步骤2:修改主方法,主动调用保存
完成数据修改后主动触发保存操作:
static void Main(string[] args) { Tabelle tab = new Tabelle(); foreach (Employees e in tab.getAll()) { Console.WriteLine(e); } tab.updating(1, "fafdsdsf", 323); // 新增主动调用保存逻辑 tab.Save(); }
额外优化建议
- 建议对文件读写操作添加try-catch异常捕获,处理文件被占用、路径无权限等异常场景
- 涉及double转字符串时,建议指定固定格式,避免系统区域设置的小数点分隔符差异导致CSV解析错误
内容的提问来源于stack exchange,提问作者Alexa
相关产品推荐
相关产品推荐

