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

求助:将Course类对象数组属性写入文本文件时出现空值问题

问题解决:导出Course实例属性到文本文件为空的修复

你这问题一眼就能看出来——在ExportCourses方法里,你错误地创建了一个全新的空Course对象,然后一直用这个空对象的属性来写文件,当然输出都是空值了!

核心错误点

看你这段代码:

Course aCourse = new Course();
for(int i =0; i<numberOfCourses;i++)
{
   writer.WriteLine("{0}{1}{2}{1}{3}{1}{4}", aCourse.CourseCode, Delim, aCourse.Name, aCourse.Description, aCourse.NoOfEvaluations);
}

这里的aCourse是你新new出来的,和你之前添加到courseMng里的prog1、prog2完全没关系,它的所有属性都是默认值(空字符串、0),所以写出来的内容自然都是空的。

修复方案

把循环里的代码改成直接取courses数组里的真实课程对象就行:

修改后的ExportCourses方法

public void ExportCourses(string fileName, char Delim)
{
    // 用using语句自动管理流资源,不用手动关闭
    using (FileStream stream = new FileStream(fileName, FileMode.Create, FileAccess.Write))
    using (StreamWriter writer = new StreamWriter(stream))
    {
        for(int i = 0; i < numberOfCourses; i++)
        {
            // 取出数组里当前索引的真实课程实例
            Course currentCourse = courses[i];
            writer.WriteLine("{0}{1}{2}{1}{3}{1}{4}", 
                currentCourse.CourseCode, 
                Delim, 
                currentCourse.Name, 
                currentCourse.Description, 
                currentCourse.NoOfEvaluations);
        }
    }
}

额外优化说明

我把原来的try-finally换成了using语句,这是C#里处理流资源的最佳实践——using会在代码块结束后自动调用流的Dispose方法,帮你关闭流,避免手动关闭可能遗漏的资源泄漏问题,代码也更简洁。

最后调用验证

别忘了在你的Main方法末尾加上调用代码,确保导出操作执行:

// 比如导出到courses.txt,用逗号作为分隔符
courseMng.ExportCourses("courses.txt", ',');

这样运行后,你的文本文件里就能看到prog1和prog2的真实属性值了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:14:20