【问题标题】:How to print every object from an array of objects? [duplicate]如何打印对象数组中的每个对象? [复制]
【发布时间】:2020-04-05 16:54:08
【问题描述】:

我创建了一个数据类型“Person”的数组。我试图让“ReadPerson()”方法返回 3 个“Person”对象。通过返回我的数组'personen',我得到错误“无法将类型'Persoon []'转换为'Personen'。我对编程很陌生,所以我仍然不确定如何正确使用数组和结构。我试过返回personen [i],但是'i'当然会在for循环之外未定义。我如何返回'Person'的3个对象?

    Persoon ReadPerson()
    {
        Persoon[] personen = new Persoon[3];

        for (int i = 0; i < personen.Length; i++)
        {
            personen[i].FirstName = LeesString("Enter first name: ");
            personen[i].SecondName = LeesString("Enter second name: ");
            personen[i].Residence = LeesString("Enter residence: ");
            personen[i].Age = LeesInt("Enter age: ", 0, 120);
            personen[i].Gender = LeesGeslacht("Enter gender (m/f): ");
            Console.Write("\n");
        }
        return personen[i];
    }

    void PrintPerson(Persoon p)
    {
        Console.Write("\n");

        Console.Write(p.FirstName + " " + p.SecondName + " ");
        PrintGeslacht(p.Gender);

        Console.Write("\n");
        Console.WriteLine("{0} jaar, {1}", p.Age, p.Residence);
    }

struct Persoon
{
    public string FirstName;
    public string SecondName;
    public string Residence;
    public int Age;
    public GeslachtType Gender;
}

【问题讨论】:

  • 您需要将return 放在循环之外。无论如何,这样会导致您的方法在第一次迭代时结束。
  • 没有。请仔细阅读。
  • “我试图让这个方法返回 3 个整数中的每一个。” 然后写 return personen[i]; 这不是这样做的方法。
  • 您的问题已经得到解答,但我想提供一些建议。我看到你正在用荷兰语编程,我建议不要这样做。我建议用英文编写所有代码,因为框架本身也是英文的。这样你就得到了荷兰语和英语的结合,这在生产中是不可行的。
  • 我试图让这个方法返回 3 个整数中的每一个。 - 这没有意义。您是否要返回三个 Persoon 对象?如果是这样,那么@dunnel123 的答案就是您要找的答案。

标签: c#


【解决方案1】:

正如目前所写,您的 for 循环只会执行一次,然后返回第一个人。

您收到“并非所有代码路径都返回值”错误,因为这正是发生的情况,您的方法的路径结束时没有返回,但方法签名需要返回类型。

看起来你想要这样的东西 -

void Main()
{
    var people = LeesPersoon();

    for (var i = 0; i < people.Length; i++)
    {
        PrintPerson(people[i]);
    }
}

void PrintPerson(Persoon p)
{
    Console.Write("\n");

    Console.Write(p.FirstName + " " + p.SecondName + " ");
    PrintGeslacht(p.Gender);

    Console.Write("\n");
    Console.WriteLine("{0} jaar, {1}", p.Age, p.Residence);
}

Persoon[] LeesPersoon()
{
     Persoon[] personen = new Persoon[3];

     for (int i = 0; i < personen.Length; i++)
     {
          personen[i].FirstName = LeesString("Enter first name: ");
          personen[i].SecondName = LeesString("Enter second name: ");
          personen[i].Residence = LeesString("Enter residence: ");
          personen[i].Age = LeesInt("Enter age: ", 0, 120);
          personen[i].Gender = LeesGeslacht("Enter gender (m/f): ");
          //Console.Write("\n");
     }

     return personen;
}

【讨论】:

  • 我在 PrintPerson(ReadPerson()) 方法中收到错误“无法将类型“Person[]”转换为“Person”;我编辑了原始消息,以便您可以查看其余代码
  • LeesPersoon的返回值存入一个变量——var people = LeesPersoon(),然后你可以循环遍历people并打印循环中的值。您将访问每个人,例如 - people[0].Voornaam 等...
  • 将返回值存储到变量中是什么意思?那会是哪个返回值?
  • ReadPerson()返回的人员数组
  • 对不起,我没看懂,返回值应该写什么?
猜你喜欢
  • 2014-12-24
  • 2022-01-22
  • 1970-01-01
  • 2020-06-27
  • 2016-02-25
  • 1970-01-01
  • 2013-03-18
  • 2016-12-22
  • 2012-01-11
相关资源
最近更新 更多