コレクション vs 配列


以前、ドメイン特化なベースライブラリを作成する場合、メソッドの引数や戻り値でコレクションにすべきか、配列にすべきか、両方に対応すべきかで迷っていた。しかし、上記の記事を見て、だいぶ見えてきた。


ListはIEnumerableを実装しているので、IEnumerableを基本とすべきだと思う。そうすれば、LINQの拡張メソッドともつながるし、コレクションはメソッド一発で配列に簡単に変換できる。引数や戻り値に限らず基本的に、通常はコレクションを使用して、特殊な用途のみに配列を使用すべきだと思う。


VS2008を入手できたので、LINQ to Objectの使い方を色々勉強しないとなあ。情報が少ない気がするが、まだ.NET 2.0を使用しているところが多いのかな。


追記(2009/4/14):

C#2.0以降であれば、配列は下限がゼロの1次元配列には、IListが自動的に実装されるらしい。ということは、関数の引数を受け取る側では、IEnumerableでもIListでも配列を受け取れる。配列の実装は場合分けする必要ない。恐らく、IEnumerableとIListの使い分けは、単にforeachなどで回したいだけか、Addなどもしたいかなど、どこまでのメソッドが必要になるかで、ケースバイケースとなると思う。


参考: