Простите глупый вопрос, но я новичок в C# & OOP.Как инициализировать вложенные массивы
Может ли кто-нибудь помочь мне предотвратить «Исключение System.NullReferenceException:»?
Я пытаюсь выполнить следующее задание и используя то, что мы узнали на сегодняшний день (массивы, классы и конструкторы).
Я создал массив классов StudentSubjects и встроил его в массив классов Student.
Я хочу распечатать детали предметов каждого учащегося.
я могу получить доступ к StudentArray[0]
поля ОК, но не может добраться до StudentArray[0].StudentSubjectsArray[0]
полей, потому что «ссылка на объект не указывает на экземпляр объекта»
Я провел 2 недели в поисках ответа, но не может найти любые примеры того, как установить
StudentArray[0].StudentSubjectsArray[0].SubjectName = "Algebra";
любой совет наиболее высоко. Мой код ниже ....
using System;
namespace Nested_Arrays
{
public class Program
{
static void Main(string[] args)
{
Student[] StudentArray = new Student[1];
Console.WriteLine($"Hello");
StudentArray[0] = new Student();
StudentArray[0].StudentName = "Peter";
StudentArray[0].StudentLocation = "Australia";
Console.WriteLine($"{StudentArray[0].StudentName,10} {StudentArray[0].StudentLocation,15}");
StudentArray[0].StudentSubjectsArray[0].SubjectName = "Algebra";
StudentArray[0].StudentSubjectsArray[0].StudentsResult = "Pass";
Console.WriteLine($"{StudentArray[0].StudentName,10} {StudentArray[0].StudentLocation,15} {StudentArray[0].StudentSubjectsArray[0].SubjectName,15} {StudentArray[0].StudentSubjectsArray[0].StudentsResult,10}");
Console.WriteLine($"Goodbye");
}
public class Student
{
public string StudentName;
private string studentName
{ get { return studentName; } set { studentName = value; } }
public string StudentLocation;
private string studentLocation
{ get { return studentLocation; } set { studentLocation = value; } }
public StudentSubjects[] StudentSubjectsArray;
private StudentSubjects[] studentSubjectsArray
{ get { return studentSubjectsArray; } set { studentSubjectsArray = value; } }
//Constructor
public Student() { }
}
public class StudentSubjects
{
public string SubjectName;
private string subjectName
{ get { return subjectName; } set { subjectName = value; } }
public string StudentsResult;
private string studentsResult
{ get { return studentsResult; } set { studentsResult = value; } }
//Constructor
public StudentSubjects() { }
}
}
}
Ваш код выглядит действительно странно. Я хотел бы предложить использовать «Список» вместо массивов - это более гибкий и безопасный способ работы с коллекциями. – MaKCbIMKo
Здравствуйте, MaKCbIMKo. Я не могу использовать List, потому что это для задания, и я должен делать то, что говорят учителя, - он говорит, что использует массивы. – Joe