如何将文本文件数据传入构造函数并生成对应对象数组
实现方案(C#)
核心思路
- 先读取文本文件所有行,过滤空行避免报错
- 对每行内容按逗号拆分,去除每个字段的前后空白字符
- 把拆分后的字段分别转换为对应数据类型,传入Member构造函数生成实例
- 所有实例汇总为数组后,既可以循环遍历所有数据,也可以通过索引直接调用指定行的实例
完整示例代码
using System; using System.IO; using System.Linq; // 你给出的Member类定义 public class Member { public string Name { get; set; } public int Number { get; set; } public decimal Rate { get; set; } public double Hours { get; set; } public Member(string name, int number, decimal rate, double hours) { Name = name; Number = number; Rate = rate; Hours = hours; } } class Program { static void Main(string[] args) { // 替换为你的文本文件实际存储路径 string filePath = @"C:\your\file\path\members.txt"; // 生成Member对象数组 Member[] members = File.ReadAllLines(filePath) .Where(line => !string.IsNullOrWhiteSpace(line)) .Select(line => { string[] fields = line.Split(',').Select(f => f.Trim()).ToArray(); return new Member( name: fields[0], number: int.Parse(fields[1]), rate: decimal.Parse(fields[2]), hours: double.Parse(fields[3]) ); }) .ToArray(); // 循环输出所有对象示例 foreach (var member in members) { Console.WriteLine($"姓名:{member.Name},编号:{member.Number},薪资费率:{member.Rate:C},工作时长:{member.Hours}h"); } // 单独调用指定行实例示例,索引从0开始,以下为调用第二行数据 var secondMember = members[1]; Console.WriteLine($"\n第二行成员姓名:{secondMember.Name}"); } }
注意事项
- 如果文本存在格式不规范的行,可以增加
try-catch块捕获转换异常,避免程序直接崩溃 - 小数转换如果出现区域格式解析错误,可以给Parse方法传入
CultureInfo.InvariantCulture参数,保证小数点识别正常
内容的提问来源于stack exchange,提问作者neoneclectica
相关产品推荐
相关产品推荐

