为什么我收到错误 方法无重载 显示所有人 需要 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();
}
}
}
您收到该错误是因为您的方法调用 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
的实例。
您必须使类person
的name
和age
属性public
和使用
Console.WriteLine(i.name); Console.WriteLine(i.age);