2016-04-22 25 views
-1

我有一個代碼可以獲取文件StudentMarks.dat並輸出所有studentID,評估,marksachieved,maxMarks。但是我能夠分割所有的值,但無法將它們添加到我的列表,並拋出我的空例外。請幫忙。我的代碼如下:無法將分割數據添加到列表

struct StudentGrade 
{ 
    public string StudentID { get; set; } 
    public string AssessmentID { get; set; } 
    public string MaxGrade { get; set; } 
    public string GradeAchieved { get; set; } 
} 

private List<StudentGrade> _studentGrade;  
private void loadItemsFromFiles() 
{ 
    string record = string.Empty; 
    string filePath = "StudentMarks.dat"; 

    FileStream stream = new FileStream(filePath,FileMode.Open); 
    StreamReader reader = new StreamReader(stream); 

    dgvGrades.Columns.Add("StudentID", "Student Id"); 
    dgvGrades.Columns.Add("Assessment", "Assessment"); 
    dgvGrades.Columns.Add("MarksAchieved", "Marks Achieved"); 
    dgvGrades.Columns.Add("MaxMarks", "Max Marks"); 

    try 
    { 

     while ((record = reader.ReadLine()) != null) 
     { 
      string[] field = record.Split(','); 
      StudentGrade grade = new StudentGrade() 
      { 
       StudentID =field[0].ToString(), 
       AssessmentID = field[1].ToString(), 
       MaxGrade = field[2].ToString(), 
       GradeAchieved = field[3].ToString() 
      }; 
      _studentGrade.Add(grade); 

     } 
    } 
    catch (IOException exception) 
    { 
     throw exception; 
    } 
    finally 
    { 
     if (reader != null) 
     { 
      reader.Close(); 
     } 
    } 

} 
+1

的NullReferenceException ** **地方之前初始化您的收藏?線路號碼也會告訴你你做錯了什麼。 –

回答

1

您還沒有初始化您的列表,它是空的,所以你得到的異常。

private List<StudentGrade> _studentGrade = new List<StudentGrade>(); 

當您在C#中聲明一個類變量時,它將獲取它的類型的默認值。例如int默認值爲0bool默認值爲'false'。所有引用類型默認值爲'null'。所以當你使用它們而沒有初始化它們時,你會得到NullReferenceException

1

你需要使用

private List<StudentGrade> _studentGrade = new List<StudentGrade>();