当到达数组中的空元素时,NullReferenceException未处理

本文关键字:元素 NullReferenceException 未处理 数组 | 更新日期: 2023-09-27 18:13:35

我想完成这个任务我有一些类,首先我想创建它们并创建它们的打印函数。稍后,我将需要创建和"addStudent"函数组类,所以我希望我的数组比需要的更大。

这是我的代码
static void Main(string[] args)
    {
        Student test = new Student("as", "dsa");
        Student test1 = new Student("Stola", "Stolova");
        Student test2 = new Student("alo", "maloo");
        Student[] students = new Student[5];
        students[0] = test;
        students[1] = test1;
        students[2] = test2;           
        Group grp = new Group("aklas", students);
        grp.print();
        Console.Read();
    }
//^
//this is my main function
class Student
{
    private string firstName;
    private string lastName;
    public string FirstName
    {
        get
        {
            return firstName;
        }
    }
    public Student()
    {
        firstName = null;
        lastName = null;
    }
    public Student(string nameOne, string nameTwo)
    {
        firstName = nameOne;
        lastName = nameTwo;
    }
    public void formatPrint()
    {
        Console.WriteLine("{0,10} {1,10}", firstName, lastName);
    }

//^这是其中一个类

class Group
{
    private string name;
    private Student[] students;
    public Group()
    {
        name = null;
        students = null;
    }
    public Group(string grpName, Student[] grpStudents)
    {
        name = grpName;
        students = grpStudents;
    }
    public void print()
    {
        Console.WriteLine("{0, 15}", name);
        for(int i = 0; i < students.Length; i ++)
        {
            if (students[i].FirstName != null)
                students[i].formatPrint();
        }
    }
}

//^这是另一个。

所以问题是,我得到了一个数组声明为5个元素,里面只有3个元素。如果我声明数组有3个元素,一切都很好,但如果它们是4个或更多,即使我写了if语句,我也会得到空异常。那么我的错误在哪里?谢谢你!

当到达数组中的空元素时,NullReferenceException未处理

您正在调用null对象的属性FirstName。这就是NullReferenceException的原因。

你应该检查对象是否为空:

if(students[i] != null)
   students[i].formatPrint();

还检查这个问题:什么是NullReferenceException,我如何修复它?

不要使用use array使用泛型列表。这将动态地增加你的类,而不用担心数组的大小。

List<student> cl=new List<student>();
class.add(newstudent);
//to print all  students in class use
foreach(Student r in cl)
{
// print info of students
}