我想从IList<float>
获得一个float []。例如,如果我有
var floats = new[] { 1.0f, 2.0f, 3.5f };
值是IList<float>
,我想写:
floats=(float[]) values;
我有一个例外,说这个演员表未经授权。我该如何解决这个问题?
答案 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
界面,以及Human
和FruitFly
实施。说IAnimal human = new Human()
然后说FruitFly b = (FruitFly)human
是没有意义的。这就是你目前正在尝试做的事情。
因此,您需要将<{em} 转换为数组。您可以通过添加IList<float>
:
System.Linq
并使用Enumerable.ToArray
扩展方法:
using System.Linq; //at top of file