2016-04-22 2 views
-1

У меня есть код, который получает файл StudentMarks.dat и выводит все studentID, оценку, markachieved, 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

Вы не инициализировали свой список, и он имеет значение null, поэтому вы получаете исключение.

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

Когда вы объявляете переменную класса в C#, она получает значение по умолчанию для своего типа. Например, значение int по умолчанию - 0 и bool Значение по умолчанию - «false». Значения по умолчанию для всех типов ссылок - «null». Поэтому, когда вы используете их без их инициализации, вы получаете NullReferenceException.

1

Вам необходимо инициализировать коллекцию перед использованием

private List<StudentGrade> _studentGrade = new List<StudentGrade>(); 
Смежные вопросы