将字符串数组转换为对象的最快方法
本文关键字:方法 对象 字符串 数组 转换 | 更新日期: 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])
});
}