【问题标题】:How to merge unknown amount of arrays?如何合并未知数量的数组?
【发布时间】:2021-12-07 03:39:50
【问题描述】:

我正在构建一个驾驶执照考试模拟测试。用户可以选择多个类别来获取问题。我想从这个数组中取票并将它们全部放在一个数组中。 这是我的代码:

public Ticket[] GetTickets(int numOfCat)
    {
        bool getTicks = true;
        if (getTicks)
        {
            System.Console.WriteLine(DrivingLicenceStorage.Categories.Length);
            for (int i = 0; i < numOfCat; i++)
            {
                System.Console.Write($"Enter category N{i + 1}: ");
                var Ids = Convert.ToInt32(Console.ReadLine());
                if (Ids > DrivingLicenceStorage.Categories.Length)
                {
                    System.Console.WriteLine("Invalid Input");
                    System.Console.WriteLine("Try Again");
                    i--;
                }
                else
                {
                    Tickets = DrivingLicenceStorage.Categories.ElementAt(Ids).Tickets;
                    getTicks = false;
                }
            }

        }
        

        return Tickets;
    }

问题是Tickets 从用户输入的最后一个类别中获取票证。如何合并所有选择类别的票?

【问题讨论】:

  • 我觉得还需要注意的是,设置getTicks = false;是没有效果的,因为在进入for循环之前就已经检查过了,在初始检查之后就再也没有使用过了。

标签: c# arrays merge


【解决方案1】:

对于具有动态元素数量的列表,数组不是正确的数据类型。您可以改用List&lt;Ticket&gt;

示例代码:

var ticketList = new List<Ticket>();
...
// repeat as often as required 
​ticketList.AddRange(DrivingLicenceStorage.Categories.ElementAt(Ids).Tickets); ​   
...
return ticketList.ToArray();

【讨论】:

  • @niniasabadze 如果您的答案适合您,请将其标记为已接受(答案左侧的复选标记)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-26
  • 1970-01-01
  • 2021-04-21
  • 1970-01-01
相关资源
最近更新 更多