我写了一个应该得到名单和信息列表的程序。好吧,我得解决几个班级的问题,比如学生和大学都要回答。但问题是我计划获取学生信息
static void Main(string[] args)
{
Console.WriteLine("Some students enter the information you want? ");
Count = int.Parse(Console.ReadLine());
University university = new University();
university.Add();
university.Sort();
university.Report();
Console.ReadKey();
}
要解决这个问题,我必须指定学生人数。
class University
{
Student[] student = new Student[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是一个为用户提供所需数字的变量。
答案 0 :(得分:2)
您可以定义一个属性,该属性可以包含您所在大学的学生人数,并在您创建大学时对其进行初始化。
class University
{
public int NumbersOfStudents { get; private set; }
public Student[] students;
public University(int numberOfStudents)
{
NumberOfStudents = numberOfStudents;
students = new Student[numberOfStudents];
}
}
所以,当你想创建一所拥有1000名学生的大学时,你会这样做:
var university = new University(1000);
现在名为university
的对象有一组学生,其中有1000个“插槽”。实际上,此数组中的每个项目都是null
。我的意思是
university.Students[0], university.Students[1], ...
是null
。
然而,我不相信这是达到您想要的最有效方式。如果我是你,我会为此选择一个List
。我们通常使用数组,当我们知道将放置在那里的项目数量时,我们将来会遇到任何我们想要添加一个项目的情况,这是不可能的,使用数组,因为数组具有固定的大小。另一方面,List
是一个没有固定大小的数据结构,它可以扩展,因为你想在其中添加更多项目。
就代码而言,我会选择这个:
class University
{
public List<Student> Students {get; private set; }
public University()
{
Students = new List<Student>();
}
}
现在你可以创建一个大学的实例,并且这样做,你也将创建一个没有项目的新学生列表。
var university = new University();
现在,您可以将学生添加到大学的学生中,如下所示:
university.Students.Add(new Student());
答案 1 :(得分:1)
我会稍微重构你的代码以使用Lists,在这种情况下,列表比数组更强大,因为数组不可变。
static void Main(string[] args) {
Console.WriteLine("Please enter the number of students: ");
Cunt = int.Parse(Console.ReadLine());
University university = new University(Cunt);
university.AddStudent(new Student() /*Student logic here.*/);
university.Sort();
university.Report();
}
class Student {
//Properties here...
public Student(){
//Default values here...
}
}
class University {
private List<Student> _Students;
public Students {
get {
return _Students;
}
//In Microsoft's guidelines, list shouldn't be exposed as properties.
protected set {
//Add list replacement logic here.
_Students = value;
}
}
public University(Int32 StudentCount) {
_Students = new List<Student>(new Student[StudentCount]);
}
public void AddStudent(Student StudentToAdd) {
//Add your logic here...
_Students.Add(StudentToAdd);
}
}