多くの場合、配列を受け入れるメソッドを提供すると、IEnumerable
であり、Count
またはLength
を必要とするより一般的なクラスを受け入れるように最適化することができます。提供するパラメータタイプは、IEnumerableでCountがありますか?
例:ここでは
public static T NextObject<T>(this Random random, T[] array)
{
return array[random.Next(array.Length)];
}
、私は元素の量を知って、特定の要素を取得するためにArray
を使用しています。どのクラスが一般的な方法でこれに最適ですか?
- のIList
- いるICollection - も
Count
- 他のインターフェースまたはクラスまたは異なるインターフェースのセットを有しますか?
私は、根本的な列挙は、より複雑な場合Count()
は、パフォーマンス上の副作用を引き起こす可能性があるので、IEnumerable
は、良いアイデアではないかもしれないと思う。
私は 'ICollection'を使うことをお勧めしますが、私はそれが少し意見*に基づいていると思います。 –
MarcinJuraszek
'ICollection'にはインデクサーがありません。私は、この2つのオーバーロードとしての「配列」は、すべての型をカバーする*(わからない)と考えています。私はこれが意見に基づくとは考えていません。なぜなら、質問は基本的にすべての一般的なタイプを最低限のオーバーロードでカバーしているからです。 –
bytecode77
なぜ単純なリストではない? –