WriteLine与一个类

我正在制作一个学习C#的SchoolApp程序,我有这个主要function,我正在努力工作:

namespace SchoolApp { class Program { public static void Main(string[] args) { School sch = new School("Local School"); sch.AddStudent(new Student { Name = "James", Age = 22 }); // this function sch.AddStudent(new Student { Name = "Jane", Age = 23 }); Console.WriteLine(sch); // this implementation } } } 

学校class级:

 namespace SchoolApp { class School { public string name; public School() { } public School(string the_name) { name = the_name; } public void AddStudent(Student student) { } } } 

学生类:命名空间SchoolApp

 { class Student { public int Age; public string Name; public Student() { Age = 0; Name = "NONAME"; } public string _name { get { return this.Name; } set { Name = value; } } public int _age { get { return this.Age; } set { Age = value; } } } } 

我是C#的新手,我很遗憾我应该如何制作AddStudent以及如何使用WriteLine来编写类。 输出应该沿着这些方向:

学校:当地学校詹姆斯,22简,23岁

有人建议使用List 我遇到了不太了解它的同样问题。

编辑:谢谢大家的快速答案。 我得到了它的工作,现在将深入阅读答案,所以我不必再问相关的问题!

在您的School课程中,您似乎想拥有一份私人学生名单。 列表很简单,它采用通用类型,在您的情况下Student ,您可以添加和删除项目。

在你的School课堂上使用:

  private List students; 

在您的AddStudent代码中,您可以简单地使用:

 students.Add(student); // student is the variable being passed in and students is the list. NOTE: You will have to make sure students is intalized to a new List of Student. students = new List(); 

看看以下链接。 MSDN是正确的文档,但是dotnetperls对于这样简单的东西很有用。

http://msdn.microsoft.com/en-gb/library/3wcytfd1.aspx

http://www.dotnetperls.com/list-add

有人建议使用List<>我遇到了不太了解它的同样问题。

是的, List类适用于这种情况。 它有一个.Add方法,允许您向其添加对象。 然后,您可以遍历此列表的元素(使用foreach语句),然后使用Console.WriteLine方法将每个元素详细信息打印到控制台。

 class School { public string name; private List students = new List(); public School() { } public School(string the_name) { name = the_name; } public void AddStudent(Student student) { students.Add(student); } public override string ToString() { var sb = new StringBuilder(); sb.AppendLine(name); foreach (var student in students) { sb.AppendLine(student.ToString()); } return sb.ToString(); } } class Student { ... public override string ToString() { return "Student : " + Name + ", " + Age; } } 

Console.WriteLine(t)执行t到string的隐式转换。 因此,您需要为所有类重写ToString() ,或者明确地从类中创建字符串。

例:

 class School { public string name; List Students = new List(); ... public override string ToString() { var stringValue = name; foreach(var student in Students) { stringValue += student.ToString(); } return stringValue; } } class Student { public int Age; public string Name; ... public override string ToString() { return string.Format("{0} {1}", Name, Age); } } 

您可以将一个扩展方法“WriteStudent”写入Console类,并接受student作为参数。 在方法内部,您可以使用Console.Write("School: " +objParameter.Name)

你有2个基本选择:

  1. 为每个学生添加“学校”属性(变量)
  2. 为每所学校添加“学生列表”属性。

如果您更喜欢第二种方法:

你需要在学校课堂上添加一个新变量:

  List student_list = new List(); 

并且为了添加学生,定义:

  public void AddStudent(Student student) { student_list.Add(student); } 

另请注意,如果您希望打印按特定顺序排列,则必须在学生和学校课程中添加ToString()方法。

希望它有所帮助,祝你好运。

首先,您需要一个容器来存储School类中Student类的实例。 然后,在AddStudent方法中,您只需使用List类本身公开的方法将学生添加到您的集合中:

 class School { public string name; private List students = new List(); // ... public void AddStudent(Student student) { students.Add(student); } } 

这是对List类的引用。

至于输出,你可以在School类本身编写一个函数来输出学生:

 public void Print() { Console.WriteLine(name); foreach (Student s in students) Console.WriteLine(s.Name + ", " + s.Age); } 

并在您的Main使用它,就像:

 sch.Print(); 

除了List需要成为School的成员之外,在main方法中添加了一个循环( foreach )来打印它们,您还应该看看以下内容:

  • 你的课程应该公开吗? 主程序可能不在同一名称空间中。
  • 您是否考虑过使用getter和setter的自动属性? http://msdn.microsoft.com/en-us/library/bb384054.aspx

     public int Age { get; set; } public String Name { get; set; } 
  • 您的命名约定, http://msdn.microsoft.com/en-us/library/vstudio/618ayhy6(v = vs.100).aspx

所有上述因为你说你是新人,所以我想不妨给你一些指示。

听起来你想添加一个School与相应的Students

 public class Student { public string StudentName { get; set; } public int Age { get; set; } } public class School : Student { public string SchoolName { get; set; } } 

 List school = new List(); school.Add(new School() { SchoolName = "USA", StudentName = "har", Age = 25 }); school.Add(new School() { SchoolName = "USM", StudentName = "japz", Age = 25 }); foreach (var item in school) { Console.WriteLine("School Name: {0} Name: {1} Age: {2} ", item.SchoolName, item.StudentName, item.Age); }