我正在制作一个SchoolApp程序来学习C#,我有这个主要功能,我正在努力工作:
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
}
}
}
学校班级:
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<>我遇到了一个对此不太了解的问题。
编辑:谢谢大家的快速答案。我得到了它的工作,现在将深入阅读答案,所以我不必再问相关问题了!答案 0 :(得分:4)
在您的School
课程中,您似乎想拥有一份私人学生列表。列表很简单,它采用通用类型,在您的情况Student
中,您可以添加和删除项目。
在School
班级中使用:
private List<Student> 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<Student>();
查看以下链接。 MSDN是正确的文档,但是dotnetperls对于这样简单的东西很有用。
答案 1 :(得分:1)
有人建议使用
List<>
我遇到了一个对此不太了解的问题。
是的,List<T>
类适用于这种情况。它有一个.Add方法,允许您向其添加对象。然后,您可以循环遍历此列表的元素(使用foreach
语句),然后使用Console.WriteLine方法将每个元素详细信息打印到控制台。
答案 2 :(得分:1)
Console.WriteLine(t)
执行t到字符串的隐式转换。因此,您需要覆盖所有类的ToString()
或明确地从您的类创建字符串。
示例:
class School
{
public string name;
List<Student> Students = new List<Student>();
...
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);
}
}
答案 3 :(得分:1)
class School
{
public string name;
private List<Student> students = new List<Student>();
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;
}
}
答案 4 :(得分:0)
您希望添加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> school = new List<School>();
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);
}
答案 5 :(得分:0)
您可以将一个扩展方法“WriteStudent”写入Console类,并接受student作为参数。在方法内部,您可以使用Console.Write("School: " +objParameter.Name)
答案 6 :(得分:0)
你有两个基本选择:
如果您更喜欢第二种方法:
您需要向学校班级添加一个新变量:
List<Student> student_list = new List<Student>();
并且为了添加学生,请定义:
public void AddStudent(Student student)
{
student_list.Add(student);
}
另请注意,如果您希望打印按特定顺序排列,则必须在学生和学校课程中添加ToString()方法。
希望它有所帮助,祝你好运。答案 7 :(得分:0)
首先,您需要一个容器来存储Student
类中School
类的实例。然后,在您的AddStudent
方法中,您只需使用List类本身公开的方法将学生添加到您的集合中:
class School
{
public string name;
private List<Student> students = new List<Student>();
// ...
public void AddStudent(Student student)
{
students.Add(student);
}
}
Here是对List
类的引用。
对于输出,您可以在School
类中编写一个函数来输出学生:
public void Print()
{
Console.WriteLine(name);
foreach (Student s in students)
Console.WriteLine(s.Name + ", " + s.Age);
}
并在Main
中使用它,就像:
sch.Print();
答案 8 :(得分:0)
除了需要成为List<Student>
成员的School
之外,在主要方法中添加了一个循环(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
以上所有因为你说你是新人,所以我想不妨给你一些指示。