为什么我收到错误 方法无重载 显示所有人 需要 0 个参数

本文关键字:所有人 显示 需要 参数 重载 错误 方法 为什么 | 更新日期: 2023-09-27 18:30:08

public class Program
{
    public static void Main(string[] args)
    {
        GroupOfPeople group = new GroupOfPeople();
        while (IOHelper.AskYesNoQuestion("Do you want to add another person to the array? "))
        {
            Console.Write("Name?   :");
            string name = Console.ReadLine();
            Console.Write("Age?    :");
            int age = int.Parse(Console.ReadLine());
            Person newPerson = new Person(name, age);
            group.AddPerson(newPerson);
        }
        group.DisplayAllPeople();
        Console.Write("Press any key to end the program... ");
        Console.ReadKey();
    }
}

下面是代码的另一部分:

public class GroupOfPeople
{
    private Person[] _people;
    public GroupOfPeople()
    {
        _people = new Person[0];
    }
    public void AddPerson(Person newPerson)
    {
        Person[] _More= new Person[_people.Length +1];
        _More[_people.Length] = newPerson;
        _people = _More;
    }
    public void DisplayAllPeople(Person[] _More)
    {
        foreach (Person i in _More)
        {
            Console.WriteLine(i);
        }
    }
}

忘记添加包含显示方法的此类我将如何实现该方法?当我在 GroupofPeople 类中调用它时,它说在那个上下文中不存在

public class Person
{
    private string _name { get; set; }
    private int _age { get; set; }
    public Person(string name, int age)
    {
        _name = name;
        _age = age;
    }

    public void Display()
    {
        Console.Write("Name : " + _name);
        Console.Write("Age  : " + _age);
        Console.WriteLine();
    }
}

}

为什么我收到错误 方法无重载 显示所有人 需要 0 个参数

您收到该错误是因为您的方法调用 DisplayAllPeople 需要传递参数,而您没有传递该参数。

我认为你必须做这样的事情。

公共类人群{ 私人[] _people;

public GroupOfPeople()
{
    _people = new Person[0];
}
public void AddPerson(Person newPerson)
{
    Person[] _More= new Person[_people.Length +1];
    _More[_people.Length] = newPerson;
    _people = _More;
}
public void DisplayAllPeople()
{
    foreach (Person i in _people)
    {
        Console.WriteLine(i);
    }
}

}

因为您已经在 AddPeople 方法中向数组添加了值。因此,只需使用该数组。

注意:我建议你应该使用集合列表。列表而不是数组,因此您可以避免数组大小调整问题。

像这样重新定义 DisplayAllPeople:

public void DisplayAllPeople() //make this changes
{
    foreach (Person i in _people)
    {
        Console.WriteLine("name:"i.name+" age:"i.age.ToString());
    }
}

尝试 : group.DisplayAllPeople();

两种方法可以做到这一点

1. 解决方案 1

改变

public void DisplayAllPeople(Person[] _More)
        {
            foreach (Person i in _More)
            {
                Console.WriteLine(i);
            }
        }

对此

public void DisplayAllPeople()
        {
            foreach (Person i in _people)
            {
                Console.WriteLine(i);
            }
        }

2. 解决方案 2

GroupOfPeople中添加以下方法

internal Person[] GetPersons()
{
    return _people;
}

和改变

group.DisplayAllPeople();

对此

group.DisplayAllPeople(group.GetPersons());

即使你摆脱了错误,最终你也不能简单地使用Console.WriteLine(i)其中i是person的实例。

您必须使类personnameage属性public和使用

Console.WriteLine(i.name); Console.WriteLine(i.age);