4

重複の可能性:
C#: List<T> と Collection<T> の違い (CA1002、ジェネリック リストを公開しないでください)

FxCop は、一般的な List を外部の世界に公開してはならないという規則を定めています。

しかし、ジェネリックリストの代わりとなる理由と何がわかりませんか?

参照 : http://msdn.microsoft.com/en-in/library/ms182142%28en-us%29.aspx

4

3 に答える 3

13

その理由は、具象の使用は実装の詳細であることを意図しており、公開したい機能のみを表すorList<T>などのより抽象的なものを公開することを意図しているためです(列挙可能、変更可能、および/またはインデックス可能)。これにより、後で実装を柔軟に変更できます。IEnumerable<T>ICollection<T>

IList<T>実際には、この警告はの代わりに戻ることで解決されることがよくありますが、その考えは、 「呼び出し元を保証するために実際に必要な機能List<T>は何か?」ということを考えるよう促すことです。たとえば、返される必要があるか、呼び出し元が返されたコレクションをいじりたくないためです。IEnumerable<T>ReadOnlyCollection<T>

于 2009-12-09T06:45:20.770 に答える
2

シナリオに適した、オブジェクト階層の最下位の基本クラス/インターフェイスを常に公開します。たとえば、このプロパティのコンシューマーが反復処理のみを行う場合は、 を使用しますIEnumerable(Of T)。を公​​開することList<T>で、クライアント コードがクラスの実装の詳細にアクセスできるようになり、カプセル化が解除されます。

于 2009-12-09T06:42:33.857 に答える
1

汎用リストは .NET 構造ですが、多くの場合、Web サービスは他のフレームワークと相互運用できるようになっています。

于 2009-12-09T06:42:48.117 に答える