到达数组中的空元素时未处理 NullReferenceException
NullReferenceException unhandled when reached null element in array
好的,所以我正在尝试完成这项任务,我得到了一些 classes,首先我想制作它们并制作它们的打印功能。稍后我需要为组 class 创建 "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);
}
// ^这是 classes
之一
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 语句,我也会得到那个 null exeption。那么我的错误在哪里?谢谢!
您正在调用 null
对象的 属性 FirstName
。这就是NullReferenceException
的原因。
你应该检查对象是否为空:
if(students[i] != null)
students[i].formatPrint();
同时检查这个问题:What is a NullReferenceException and how do I fix it?
不要使用数组使用泛型 List.This 会动态增加你的 class 而不必担心数组的大小。
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
}
好的,所以我正在尝试完成这项任务,我得到了一些 classes,首先我想制作它们并制作它们的打印功能。稍后我需要为组 class 创建 "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);
}
// ^这是 classes
之一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 语句,我也会得到那个 null exeption。那么我的错误在哪里?谢谢!
您正在调用 null
对象的 属性 FirstName
。这就是NullReferenceException
的原因。
你应该检查对象是否为空:
if(students[i] != null)
students[i].formatPrint();
同时检查这个问题:What is a NullReferenceException and how do I fix it?
不要使用数组使用泛型 List.This 会动态增加你的 class 而不必担心数组的大小。
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
}