そこにあるものから、ループすることが唯一の方法です。
私はクラスの開発者にかなりイライラするでしょう。.NET には、よく知られているインターフェイスによってバックアップされる規則があります。ICollection、ICollection<T>、IList、IList<T>特に適切であること。
配列とstringの使用はほぼ例外ですが、「GetSize」を呼び出す理由(または実際には、「GetXXX」の形式でプロパティを呼び出すLength理由) を考えることができる唯一の理由は、GetSizeクラスを使用していて、私はそれらが本当に嫌いでした。実装しないことICollection<float>は正当化される可能性が少し高くなりますが、それでも気にしないというよりも、正当な理由で正当化されるものです。
この性質のほとんどのクラスは を実装するためICollection<float>、これが発生するほとんどの場合、次のことができます。
float[] arr = new float[indexer.Count];
indexer.CopyTo(arr, 0);
しかし、まだ最も奇妙なのは、実装さえしていないという事実ですIEnumerable<float>。それは本当に、本当に奇妙です。これは .NET のやり方の核心部分であり、本当に正当な理由がない限り、省略されたバグに近いものです。もしそうなら、あなたはちょうどできたはずですindex.ToArray().
このオブジェクトを頻繁に使用する必要がある場合は、ラッパー クラスまたは少なくとも一連の拡張メソッドを作成して、ギャップを埋めるでしょう。