について混乱し、私はMicrosoftのGuidelines for Collectionsを見ていると私は理解しにくい少数の部品を見つける:のMicrosoftのガイドライン:いくつかの部分
Xは、公開APIにArrayList
またはList<T>
を使用しないでください。これは、私がList<T>
を返すことを避けるべきであるか、それともIEnumerable
/IList
として返すことができますが、明示的にはList<T>
ではありませんか?
✓パラメータタイプとして可能な限り特殊化されていないタイプを使用してください。ほとんどのメンバーはコレクションとしてパラメータを取ります。IEnumerable<T>
インターフェイスを使用します。 ReSharperが「IEnumerableの複数の列挙」の可能性について不平を言ったのを見て、あらかじめ計算されたオブジェクトの有限集合(レイジーストリームではない)を期待していたときにはICollection<T>
を受け取る(そして戻す)方が良い考えでした。そうじゃないの?
✓は、プロパティのCollection<T>
又はCollection<T>
のサブクラスを使用するか、読み取り/書き込みコレクションを表す値を返すようにしてください。 ICollection<T>
を使用してみませんか?私はインターフェイスが具体的なクラスよりも好ましいと思った。
これらのガイドラインは、2008年に書かれたもので、.NET 3.5およびC#3.0より新しいバージョンでは更新されていないことに注意してください。具体的には、C#4.0で2010年に共分散とコントラバナンスを導入する前にアドバイスを書いた –