假设你文件是每行一个值:
List<StudentDetails> studentList = new List<StudentDetails>();
using (StreamReader sr = new StreamReader(@"filename"))
{
while (!sr.EndOfStream)
{
StudentDetails student;
student.unitCode = sr.ReadLine();
student.unitNumber = sr.ReadLine();
student.firstName = sr.ReadLine();
student.lastName = sr.ReadLine();
student.studentMark = Convert.ToInt32(sr.ReadLine());
studentList.Add(student);
}
StudentDetail[] studentArray = studentList.ToArray();
}
注意,这并不是很稳定 - 如果没有5号线为每一位学生,你会碰到的问题,或者如果最后一个学生有不超过5行。
编辑
以教训从以前的问题Array of structs in C#了解到关于需要在struct
覆盖ToString()
,下面可能帮助打印值来解决此问题:
在StudentDetails结构(摘自尼克布拉德利的回答):
public override string ToString()
{
return string.Format("{0}, {1}, {2}, {3}, {4}", unitCode,
unitNumber, firstName, lastName, studentMark);
}
然后,你可以简单地循环阵列:
for (int i = 0; i < studentArray.Length; i++)
{
Console.WriteLine("Student #{0}:", i);
Console.WriteLine(studentArray[i]);
Console.WriteLine();
}
来源
2011-08-14 05:31:11
Tim
是字符串是固定大小还是变量? – BrokenGlass
@BrokenGlass:变量,因为名字和姓氏的长度会有所不同 – n1te