そこにあるものから、ループすることが唯一の方法です。
私はクラスの開発者にかなりイライラするでしょう。.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()
.
このオブジェクトを頻繁に使用する必要がある場合は、ラッパー クラスまたは少なくとも一連の拡張メソッドを作成して、ギャップを埋めるでしょう。