我想從一個IList<float>
有一個float []。舉例來說,如果我有如何使用xamarin android從IList <float>獲取float []?
var floats = new[] { 1.0f, 2.0f, 3.5f };
值是IList<float>
,我想寫:
floats=(float[]) values;
我有一個例外,說這個投沒有被授權。我該如何解決這個問題?
我想從一個IList<float>
有一個float []。舉例來說,如果我有如何使用xamarin android從IList <float>獲取float []?
var floats = new[] { 1.0f, 2.0f, 3.5f };
值是IList<float>
,我想寫:
floats=(float[]) values;
我有一個例外,說這個投沒有被授權。我該如何解決這個問題?
所以,除非基礎類型的values
是float[]
那麼這個投將失敗。
從呈現的證據中,我假設您有其他具體類型,或許List<float>
存儲在values
。
即使兩者都實現接口IList<float>
,List<float>
是不同的實現並且不從float[]
繼承。演員陣容失敗。
以更自然的方式思考事物:假設您有IAnimal
接口,以及Human
和FruitFly
實現。說IAnimal human = new Human()
,然後說FruitFly b = (FruitFly)human
沒有意義。這是你目前正在嘗試做的事情。
因此,您需要將轉換爲您的IList<float>
爲一個數組。您可以通過System.Linq
做到這一點:
using System.Linq; //at top of file
,並使用Enumerable.ToArray
擴展方法:
floats = values.ToArray();
我認爲你正在尋找:
var floats = new[] { 1f, 2f, 3f };
var list = floats.ToList();
var newFloatsArray = list.ToArray<float>();
也許['IList.CopyTo'](https://msdn.microsoft.com/en-us /library/system.collections.ilist(v=vs.110).aspx)很有幫助。 – Downvoter
你的問題有點不清楚,但是從IList創建一個數組可以使用:'list.ToArray()' –
它真的是'IList'還是'List'? – Downvoter