我怎样才能从带有xamarin android的IList <float>中获得一个float []?

时间:2016-07-22 11:43:19

标签: c# floating-point xamarin.android

我想从IList<float>获得一个float []。例如,如果我有

    var floats = new[] { 1.0f, 2.0f, 3.5f };

值是IList<float>,我想写:

floats=(float[]) values;

我有一个例外,说这个演员表未经授权。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

我认为您正在寻找:

var floats = new[] { 1f, 2f, 3f };
var list = floats.ToList();
var newFloatsArray = list.ToArray<float>();

答案 1 :(得分:1)

因此,除非values 的基础类型 float[],否则此演员表将失败。

根据所提供的证据,我假设您有其他具体类型,可能List<float>存储在values中。

尽管两者都实现了接口IList<float>,但List<float>是一个不同的实现,并且不从float[]继承。演员失败了。

以更自然的方式思考问题:假设您拥有IAnimal界面,以及HumanFruitFly实施。说IAnimal human = new Human()然后说FruitFly b = (FruitFly)human是没有意义的。这就是你目前正在尝试做的事情。

因此,您需要将<{em} 转换为数组。您可以通过添加IList<float>

来实现此目的
System.Linq

并使用Enumerable.ToArray扩展方法:

using System.Linq; //at top of file