C#自动添加新学生

  • 本文关键字:新学生 添加 c#
  • 更新时间 :
  • 英文 :


所以,我创建了这段代码,它应该代表学校里的一个人/学生。

这个代码背后的目标是允许我创建一个新的学生,而不必为我想添加到系统中的每个新学生手动创建一个继承的新类。问题是我根本不知道从哪里开始。有人能给我一个线索来帮助我吗?

class student
{
//alle properties van de student
public string studentnummer;
public string naam;
public string postcode;
public string telefoonnummer;
public List<string> vakken;
//een no-argument constructor
public student()
{
//informatie over de studen
studentnummer = "S101010";
naam = "Voornaam Achternaam";
postcode = "1111AT";
telefoonnummer = "31+ 0571 123456";
vakken = new List<string>();
vakken.Add("Voorbeeld vak 1");
vakken.Add("Voorbeeld vak 2");  
}
//override van de ToString methode? (ik weet niet of dit ook de goede manier is)
public override string ToString()
{
return $"Studentnummer: {studentnummer}, naam: {naam}, postcode: {postcode}, telefoonnummer :{telefoonnummer}, aantal vakken: {String.Join(", ", vakken)}";
}
}
class Program
{
static void Main(string[] args)
{
student Student = new student();
Console.WriteLine(Student.ToString());
Console.WriteLine(" ");
Console.WriteLine(" ");
}
}

我还处于学习编码的早期阶段,不知道如何实现我的目标。

编辑:我不仅不知道从哪里开始,甚至不知道怎么做。

您可能只想为创建的每个学生设置学生类。

首先,一些理论:

  • 类只是一个抽象的东西,它只是描述它是什么。在你的例子中,student说学生有一些名字和其他数据
  • 要赋予类"生命",您需要实例化它并创建对象。这就是你通过以下代码所做的:

    student Student = new student();
    

这行告诉计算机创建新学生。但在这个地方,你可能想说:"我想创造学生Voornaam Achternaam"。因此,您需要另一段代码来执行此操作。为此,您需要所谓的构造函数。你已经有了一个,但在这里你误解了它的用法。在空构造函数中,如果需要,应该将类的数据初始化为一些默认值。但您可以指定构造函数的参数。示例:

public student(string number, string name, ..........)
{
//informatie over de studen
studentnummer = number;
naam = name;
......................
}

您可以通过以下实例化使用此构造函数:

student Student = new student("S101010", "Voornaam Achternaam", ......);

为了简单起见,我在这里只使用了两个论点,但我认为你理解原理。

BTW:我也会创建空的构造函数,但它的代码会简单得多:

public student()
{
vakken = new List<string>();
}

说明:所有其他数据都是字符串,它们自动具有默认值(null(。它是可以的,有效的值,因为通常在分配后使用它。vakken为列表,默认值也是null。它也可以,但在初始化之前,您可能会尝试使用它。示例:

naam = "Name"; // This is OK, as assigning some string to field with `null` value is OK.
vakken.Add("Voorbeeld vak 1"); // this will throw NullException

第二行抛出异常的原因是,您想在不存在的对象上调用该方法。由于这种情况经常发生,您会忘记List没有初始化,因此在构造函数中初始化它是一个好习惯(不一定,但在开始时,不要忘记初始化类中的任何数据,这些数据也是类(。

这个怎么样:

class Program
{
static void Main(string[] args)
{
Student student = new Student
{
//informatie over de studen
Studentnummer = "S101010",
Naam = "Voornaam Achternaam",
Postcode = "1111AT",
Telefoonnummer = "31+ 0571 123456"
};
student.Wakken.Add("Voorbeeld vak 1");
student.Wakken.Add("Voorbeeld vak 2");
Console.WriteLine(student.ToString());
}
}
class Student
{
//alle properties van de student
public string Studentnummer { get; set; }
public string Naam { get; set; }
public string Postcode { get; set; }
public string Telefoonnummer { get; set; }
public List<string> Wakken { get; } = new List<string>();
//een no-argument constructor
public Student()
{ }
//override van de ToString methode? (ik weet niet of dit ook de goede manier is)
public override string ToString()
{
return $"Studentnummer: {Studentnummer}, naam: {Naam}, postcode: {Postcode}, telefoonnummer :{Telefoonnummer}, aantal vakken: {String.Join(", ", Wakken)}";
}
}

这里有一个略有不同的版本,向您展示了如何使用静态工厂方法。

如果你想了解更多关于这方面的信息,你可以阅读以下

什么是静态工厂方法?

public class Student
{
public string StudentNummer { get; set; }
public string Naam { get; set; }
public string PostCode { get; set; }
public string TelefoonNummer { get; set; }
public List<string> Vakken { get; set; }

public static Student Create(string studentNummer, string naam, string postCode, string telefoonNummer, List<string> vakken)
{
return new Student(studentNummer, naam, postCode, telefoonNummer, vakken);
}
private Student(string studentNummer, string naam, string postCode, string telefoonNummer, List<string> vakken)
{
StudentNummer = studentNummer;
Naam = naam;
PostCode = postCode;
TelefoonNummer = telefoonNummer;
Vakken = vakken;
}
private Student()
{
Vakken = new List<string>();
}
public override string ToString()
{
return $"Studentnummer: {StudentNummer}, naam: {Naam}, postcode: {PostCode}, telefoonnummer :{TelefoonNummer}, aantal vakken: {String.Join(", ", Vakken)}";
}
}
class Program
{
static void Main(string[] args)
{
var student = Student.Create("S101010", "Voornaam Achternaam", "1111AT", "31+ 0571 123456", 
new List<string>()
{
"Voorbeeld vak 1", "Voorbeeld vak 2"
});
Console.WriteLine(student.ToString());
}
}

最新更新