0

コード分​​析を実行すると、関数に関する警告が表示されます。

関数の署名は次のとおりです。public int ExecuteAscommand(List<string> Commands)

警告メッセージ: リストを Collection、Readonlycollection、または KeyedCollection に変更してください。

リストはパフォーマンスが最適化されていますが、継承用に設計されていないため、MSDN はこのシナリオを説明しています。また、再利用可能なライブラリとして使用されていない場合にのみ、この警告を抑制します。

私の関数は、リストからすべてのアイテムを読み取り、データを使用してタスクを実行するだけです。何もありません。しかし、この関数は私が構築している再利用可能なライブラリの一部です。

パラメータ タイプを List から他のタイプに変更する必要がありますか?

4

2 に答える 2

4

コマンドを列挙する (すべてを読み取る) だけの場合、インターフェイスのタイプはIEnumerable<string>. そうすれば、ユーザーはそのインターフェイスを実装するものなら何でも渡すことができます: 配列、リスト、コレクション、または foreach ループに入れることができるその他のもの。

于 2013-08-07T05:43:58.700 に答える
0

コレクションを IList などとして公開する場合は、List を実際のバッキング ストアとして使用できますが、クラスのパブリック コントラクトを変更することなく、具体的な実装を後で交換できるため、将来の拡張性を保持できます。

List は、サブクラス化して簡単に拡張できるようには設計されていません。List の主な目的は、内部実装を高速にすることです。そのメソッドが仮想ではないことに気付くでしょう。

于 2013-08-07T06:00:08.507 に答える