假設你文件是每行一個值:
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