【问题标题】:How to create an array without knowing how many values will be store?如何在不知道要存储多少值的情况下创建数组?
【发布时间】:2019-08-08 14:50:36
【问题描述】:

在 C# 中,我将值存储在数组中。

所以为了创建这个数组,我使用了这段代码,'int[] values = new int[10];'

但是,如果我需要超过 10 个值,或者我永远不知道我将拥有多少个值,该怎么办。可以是 1、10 或 100。

我理解我需要让编译器知道数组应该有多大,以便它可以为其分配内存空间。

有没有办法解决这个问题?

【问题讨论】:

  • 为了避免这个问题,你可以使用List,然后当它准备好后,使用List.toArray()函数将它转换成数组
  • 如果你只有一个一维数组,为什么不使用列表来存储你的值呢?

标签: c# arrays memory allocation


【解决方案1】:

请看研究“不可变对象”的概念

数组具有固定大小,如果您需要动态大小的数组,最好创建扩展方法或为您工作的处理程序。

要做的工作是获取数组,根据您是否要添加或删除某些内容来创建具有新大小的新数组,并使用前一个数组中的数据填充新数组。这将创建一个新对象,而不是修改之前的对象,并确保您不会将项目推送到一个完整的数组中,或者让一个数组的大小大于适合其中的项目。

当然 List 类也可以工作,并且可能会解决您的问题。

【讨论】:

    【解决方案2】:

    您可以使用 List 并让它为您完成所有繁重的工作:

    List<int> values = new List<int>();
    

    【讨论】:

      【解决方案3】:

      数组必须有定义的长度。如果您想要动态大小,请考虑使用 List 类。

      【讨论】:

        猜你喜欢
        • 2012-06-25
        • 2011-09-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-05
        • 1970-01-01
        • 2020-10-16
        • 2016-05-12
        相关资源
        最近更新 更多