2016-04-22 14 views
-1

私はファイルStudentMarks.datを取得し、すべてのstudentID、assessment、marksachieved、maxMarksを出力するコードを持っています。しかし、私はすべての値を分割することができますが、それらを私のリストに追加することができず、私にnull例外がスローされます。助けてください。私のコードは次の通りです:リストに分割データを追加できません

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のデフォルト値は0で、boolのデフォルト値は「false」です。すべての参照型のデフォルト値は 'null'です。したがって、それらを初期化せずに使用すると、NullReferenceExceptionとなります。

1

あなたは** **

private List<StudentGrade> _studentGrade = new List<StudentGrade>(); 
関連する問題