我写了一个应该得到名单和信息列表的程序。好吧,我得解决几个班级的问题,比如学生和大学都要回答。但问题是我计划获取学生信息
static void Main(string [] args) {
Console.WriteLine("Some students enter the information you want? ");
Cunt = int.Parse(Console.ReadLine());
University university = new University();
university.Add();
university.Sort();
university.Report();
Console.ReadKey();
}
要解决这个问题,我必须指定学生人数。
大学班级 { 学生[]学生=新生[3]; private int n = 0;
public University()
{
for (int i = 0; i < 3; i++)
student[i] = new Student();
}
public void Add()
{
Console.WriteLine();
for (int i = 0; i < 3; i++)
{
student[n].Read();
n++;
}
}
例如,我有三个学生人数。如何创建一种方法来输入提供信息而不是默认的学生数量?而不是数字3是一个为用户提供所需数字的变量。
然后在朋友的帮助下改变程序,但我遇到了这个问题。
class University
{
// Student[] student = new Student[3];
public int NumbersOfStudents { get; private set; }
public Student[] student;
public University(int numberOfStudents)
{
for (int i = 0; i < numberOfStudents; i++)
student[i] = new Student();
}
private int n = 0;
/* public University()
{
for (int i = 0; i < 3; i++)
student[i] = new Student();
}*/
但是当我运行它时,我得到错误:对象引用未设置为对象的实例。
notic:程序无法使用该列表。
答案 0 :(得分:2)
您永远不会初始化student
字段,因此它为空。你可以使用:
// Note: public fields are almost *always* a bad idea
private readonly Student[] students;
public University(int numberOfStudents)
{
students = new Student[numberOfStudents];
for (int i = 0; i < numberOfStudents; i++)
{
students[i] = new Student();
}
}
然而,在我看来,这是一个非常讨厌的解决方案 - 为什么要创建所有这些无用的Student
对象?为什么要提前填充University
?
最好使用List<T>
而不是数组:
public class University
{
private readonly IList<Student> students = new List<Student>();
// Presumably some other fields and properties
public void AddStudent(Student student)
{
students.Add(student);
}
}