You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#读取文件数据到类对象时内容被覆盖的问题排查

问题原因

你只初始化了一个Content类型的对象mapTo,循环过程中只是反复修改这个对象的属性值,再将同一个对象的引用添加到列表element中。由于列表存储的是对象引用,最终所有元素指向的都是同一个Content实例,所以看起来所有记录都被最后一次修改的内容覆盖了。

修正代码

把new Content()的创建移到循环的else块内部,每次循环生成一个新的Content对象实例:

public static void Process()
{
    var path = @"ABC.csv";
    var header = false;
    var lines = System.IO.File.ReadAllLines(path); // 修正原代码中变量名不一致的问题(定义path却用filePath)
    var element = new List<Content>();
    
    for (var i = 0; i < lines.Length; i++)
    {
        var t = lines[i];
        if (!header)
        {
            header = true;
        }
        else
        {
            var data = t.Split(',');
            var mapTo = new Content(); // 每次循环创建新的对象实例
            mapTo.Key = data[0];
            mapTo.Name = data[1];
            mapTo.Number = data[2];
            mapTo.Date = data[3];
            element.Add(mapTo);
        }
    }
   
    var result = element;
}
额外提示
  • 原代码存在变量名不一致的小问题(定义了path,读取文件时却用了未声明的filePath),修正代码中已同步修复。
  • 直接用Split(',')处理CSV不够严谨,如果字段包含逗号(比如带引号的字段)会拆分错误,复杂场景建议使用专门的CSV解析库(如CsvHelper)。

内容的提问来源于stack exchange,提问作者shreyas35

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 06:46:00