【问题标题】:Class method doesn't return list类方法不返回列表
【发布时间】:2019-02-02 18:46:49
【问题描述】:

我有一个包含另一个类列表的类,我想将它返回到主类,但由于某种原因我什么也没收到,我很确定我正在正确填写列表! 这是我的主要课程

    static void Main(string[] args)
    {
        int n = int.Parse(Console.ReadLine());
        Poll currpoll = new Poll();
        for (int i = 0; i < n; i++)
        {
            string[] Input = Console.ReadLine().Split();
            Person person = new Person(Input[0], int.Parse(Input[1]));
            currpoll.Add(person);

        }
        currpoll.Order();
        List<Person> final = currpoll.Getlist();
        foreach (var person in final)
        {
            Console.WriteLine(person);

        }
    }

我的“个人类”:

class Person
{
    public Person(string name, int age)
    {

    }
    private string name;
    private int age;

    public int Age
    {
        get { return this.age; }
        set { this.age = value; }
    }
    public string Name
    {
        get { return this.name; }
        set { this.name = value; }
    }
}

和我最后一堂包含列表的课程

class Poll
{
    private List<Person> people = new List<Person>();

    public void Add(Person member)
    {
        if (member.Age > 30)
        {
            this.people.Add(member);
        }
    }
    public void Order()
    {
        this.people.OrderBy(x => x.Name);
    }

    public List<Person> Getlist()
    {
        return this.people;
    }
}

【问题讨论】:

  • 您能提供您的程序的输入吗?我怀疑这些人的年龄可能小于 30。如果是这样,他们将不会被添加到列表中。
  • 附加调试器并单步执行代码,单步执行相关方法并使用适当的断点。跟随并理解每行代码执行的原因。这个问题是“帮助调试”,而不是最小的复制案例。
  • 你的 Order() 方法什么都不做,OrderBy 返回一个 new 列表

标签: c# list oop


【解决方案1】:

问题在于您没有启动 Person 的特征值。

public Person(string name, int age)
{
    this.name = name;
    this.age = age;
} 

请注意,您还可以在 Person 类中覆盖 ToString() 以获得良好的输出:

public override string ToString()
{
    return "Name: " + this.name + ", Age: " + this.Age;
}

使用此link 了解更多信息。

【讨论】:

    【解决方案2】:

    问题可能出在这里:

    Person person = new Person(Input[0], int.Parse(Input[1]));
    

    也许你想做这样的事情:

    Person person = new Person(Input[i], int.Parse(Input[i+1]));
    

    您的程序的输入可能会有所启发

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-14
      • 2021-09-14
      • 2012-07-22
      • 1970-01-01
      • 1970-01-01
      • 2014-10-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多