创建Entry的动态数组

时间:2018-05-06 00:08:23

标签: c#

我需要从我从API获得的数据创建一个数组。数据需要位于我从MicroCharts库中获取的对象Entry中。

错误是:Index was outside the bounds of the array.在第二行。

这是我的尝试之一:

        var entries = new[]{ new Entry(2) { } };
        entries[2]=( new Entry(3) { });

        for (int i = 0; i < _CoinHistory.Count(); i++)
        {
            var price_float = float.Parse(_CoinHistory[0].price_btc);
            entries[i] = new Entry(price_float) { };
        }

有效的硬编码部分是:

        var entries = new[]
        {
            new Entry(200)
            {
            },
            new Entry(400)
            {
            },
            new Entry(-100)
            {
            }
        };

编辑:来自zaitsman的答案都是PiotrWolkowski的答案。就像linq一样。

2 个答案:

答案 0 :(得分:2)

为什么不使用Linq?

var entries = _CoinHistory.Select(x => new Entry(x.price_btc)).ToArray()

答案 1 :(得分:1)

错误意味着您已超出数组的大小。

在C#中创建数组后,它会保持其大小。您可以通过使用所需数量的项初始化数组来确定大小,如下例所示:

{ place_id: 4 }

或者通过提供参数数量作为参数

    var entries = new[]
    {
        new Entry(200)
        {
        },
        new Entry(400)
        {
        },
        new Entry(-100)
        {
        }
    };

两者都将创建一个大小为3的数组,但第二个将为空。

在第一行的代码中,您创建了一个大小为1的数组,然后尝试将值赋给数组中的第三个位置 - 这个值不存在。

如果您想要动态调整大小的集合,请使用var entries = new Entry[3] ,然后在处理完成后将其转换为List<Entry>调用的数组。

您还可以初始化结果大小的数组:

ToArray()