Also, es sei denn, die zugrunde liegende Typ von values
istfloat[]
dann diese Besetzung wird scheitern.
Aus den vorliegenden Beweisen gehe ich davon aus, dass Sie einen anderen konkreten Typ haben, vielleicht List<float>
, gespeichert in values
.
Obwohl beide Schnittstelle implementieren IList<float>
, List<float>
ist eine andere Implementierung und erbt nicht von float[]
. Die Besetzung schlägt fehl.
Denken Sie über Dinge auf eine natürliche Art und Weise: Sagen Sie, Sie haben IAnimal
Schnittstelle und Human
und FruitFly
Implementierungen. Es macht keinen Sinn, IAnimal human = new Human()
zu sagen, dann zu sagen FruitFly b = (FruitFly)human
. Das versuchen Sie gerade.
So müssen Sie konvertieren Ihre IList<float>
zu einem Array. Sie können dies tun, indem System.Linq
:
using System.Linq; //at top of file
und mit Hilfe der Enumerable.ToArray
Erweiterungsmethode:
floats = values.ToArray();
Vielleicht [ 'IList.CopyTo'] (https://msdn.microsoft.com/en-us /library/system.collections.ilist(v=vs.110).aspx) ist hilfreich. – Downvoter
Ihre Frage ist etwas unklar, aber ein Array aus einem IList zu erstellen, kann mit: 'list.ToArray()' –
Ist es wirklich 'IList' oder' List'? – Downvoter