将字符串数组转换为对象的最快方法

本文关键字:方法 对象 字符串 数组 转换 | 更新日期: 2023-09-27 18:19:45

我有一个List<string[]> stringStudentList,其中每个学生数组都包含所有属性的字符串。我需要以最快的方式将其转换为对象Student。

例如,string[] student1 = {"Billy", "16", "3.32", "TRUE");需要转换为类:

class Student
{
    string name { get; set; }
    int age { get; set; }
    double gpa { get; set; }
    bool inHonors { get; set; }
}

然后插入到CCD_ 3。stringStudentList有数百万学生,所以这必须尽可能快。我目前正在关注这个从CSV文件中获取数据的示例,但它太慢了——需要几分钟的时间来转换&解析字符串。如何以最快的方式转换我的列表?

将字符串数组转换为对象的最快方法

您可以为Student创建一个以string[]为参数的构造函数:

Student(string[] profile)
{
    this.name = profile[0];
    this.age = int.Parse(profile[1]);
    this.gpa = double.Parse(profile[2]);
    this.inHonor = bool.Parse(profile[3]);
}

然而,我认为在这种情况下,您应该真正研究序列化。

new Student添加到预先分配的列表中的常规循环会非常快:

//List<string[]> stringStudentList
var destination = new List<Student>(stringStudentList.Length);
foreach(var r in stringStudentList)
{
   destination.Add(new Student 
    {
      name =r[0],
      age = int.Parse(r[1]),
      gpa = double.Parse(r[2]),
      inHonors = r[3] == "TRUE"
    });
}

这样的东西应该能在中工作

var list students = new List<Student>();
foreach(var student in stringStudentList)
{
   students.Add(new Student
   {
       name = student[0]
       age = int.Parse(student[1]),
       gpa = double.Parse(student[2]),
       inHonors = bool.Parse(student[3])
   });
}