我需要从我从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一样。
答案 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()