0

Returning 'IList' vs 'ICollection' vs 'Collection'とそれがリンクしている他の質問を見てきましたが、私はまだこの問題について混乱しています。

デモンストレーションのために、次のようにパブリックメソッドを公開するクラスがあると仮定しましょう。

public ReadOnlyCollection<Type> GetReadOnlyCollection(IEnumerable<Type> enumerable)
{
    List<Type> list = enumerable.ToList();
    return new ReadOnlyCollection<Type>(list);
}

CA1002に従うために、具体的に を返したい場合、メソッドは実際のコレクション クラス( ReadOnlyCollectionCollectionなど) またはそれらのインターフェイス( IList、など) を返す必要がありますか?ICollectionReadOnlyCollection

4

2 に答える 2

1

可能な限り一般的な型を返すと、後で実装を変更する柔軟性が得られます。しかしもちろん、消費者にとって有用な型を返す必要があります。したがって、コンシューマー側での使用に問題が生じない限り、通常はインターフェイス タイプを返す方が適切であり、より一般的なタイプも返されます。

于 2013-08-10T01:07:19.593 に答える