WriteLine与一个类

时间:2013-02-24 14:36:53

标签: c# .net list class

我正在制作一个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<>我遇到了一个对此不太了解的问题。

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

9 个答案:

答案 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对于这样简单的东西很有用。

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

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

答案 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)

你有两个基本选择:

  1. 为每个学生添加“学校”属性(变量)
  2. 为每所学校添加“学生列表”属性。
  3. 如果您更喜欢第二种方法:

    您需要向学校班级添加一个新变量:

     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)以将其打印出来,您还应该查看以下:

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