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

如何在C#中将Student对象写入文件?

在C#中将Student对象写入文件的完整实现方案

我来帮你搞定这个问题,先梳理下你给出的代码里的几个小细节问题:比如print方法放在Student类里作为实例方法不太方便调用,建议改成静态方法或者移到Program类;另外Main方法里的文件路径没写完,还有核心的写入文件逻辑缺失。下面给你几种不同场景下的实用实现方案:

1. 写入人类可读的文本文件(最简单的方式)

这种方式利用你已经重写的ToString()方法,直接把学生信息逐行写入文本文件,适合只需要简单记录、方便查看的场景。

完整代码如下:

using System;
using System.IO;

namespace WriteStudents
{
    class Student
    {
        // 建议用属性代替公共字段,更符合C#的编码规范
        public string Name { get; set; }
        public int Mark { get; set; }

        public Student(string n, int m)
        {
            Name = n;
            Mark = m;
        }

        // 用字符串插值重写ToString,比拼接更简洁清晰
        public override string ToString()
        {
            return $"{Name} {Mark}";
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            // 准备测试的学生数组
            Student[] studentGroup = new Student[]
            {
                new Student("Alice", 92),
                new Student("Bob", 87),
                new Student("Charlie", 79)
            };

            // 替换成你实际要保存的文件路径
            string filePath = @"C:\your\path\students.txt";

            // 使用StreamWriter配合using语句,自动释放文件资源,避免文件被占用
            using (StreamWriter writer = new StreamWriter(filePath))
            {
                foreach (var student in studentGroup)
                {
                    writer.WriteLine(student.ToString());
                }
            }

            Console.WriteLine("学生数据已成功写入文本文件!");
        }
    }
}

2. 二进制序列化写入(适合还原对象场景)

如果你需要后续从文件里直接还原出Student对象,二进制序列化是个高效的选择,它会保存对象的完整状态。

注意:必须给Student类标记[Serializable]特性才能进行二进制序列化。

完整代码:

using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;

namespace WriteStudents
{
    // 必须添加Serializable特性,否则无法进行二进制序列化
    [Serializable]
    class Student
    {
        public string Name { get; set; }
        public int Mark { get; set; }

        public Student(string n, int m)
        {
            Name = n;
            Mark = m;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Student[] studentGroup = new Student[]
            {
                new Student("Alice", 92),
                new Student("Bob", 87),
                new Student("Charlie", 79)
            };

            string filePath = @"C:\your\path\students.bin";

            // 用FileStream和BinaryFormatter完成序列化写入
            using (FileStream fs = new FileStream(filePath, FileMode.Create))
            {
                BinaryFormatter formatter = new BinaryFormatter();
                formatter.Serialize(fs, studentGroup);
            }

            Console.WriteLine("学生对象已通过二进制序列化写入文件!");
        }
    }
}

3. JSON序列化写入(跨平台通用,可读性强)

JSON格式现在是跨平台交互的主流,既可读又能方便地反序列化回对象,适合大多数现代开发场景。

如果你用的是.NET Core/.NET 5+,可以直接用自带的System.Text.Json;如果是.NET Framework,建议通过NuGet安装Newtonsoft.Json包。

这里给出用System.Text.Json的实现:

using System;
using System.IO;
using System.Text.Json;

namespace WriteStudents
{
    class Student
    {
        public string Name { get; set; }
        public int Mark { get; set; }

        public Student(string n, int m)
        {
            Name = n;
            Mark = m;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Student[] studentGroup = new Student[]
            {
                new Student("Alice", 92),
                new Student("Bob", 87),
                new Student("Charlie", 79)
            };

            string filePath = @"C:\your\path\students.json";

            // 序列化时开启缩进,生成格式美观的JSON
            var serializeOptions = new JsonSerializerOptions { WriteIndented = true };
            string jsonContent = JsonSerializer.Serialize(studentGroup, serializeOptions);

            // 直接把JSON字符串写入文件
            File.WriteAllText(filePath, jsonContent);

            Console.WriteLine("学生数据已通过JSON序列化写入文件!");
        }
    }
}

方案选择建议

  • 简单文本记录:选第一种方式,快速直观
  • 需要还原对象:选二进制序列化,效率高
  • 跨平台/需要和其他系统交互:选JSON序列化,通用性强

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:19:30